본문 바로가기

PHP

임시 비밀번호 임의의 문자열 생성 (임시 비밀번호 발급)

 

 

  1. 안드로이드에서 사용자가 비밀번호 찾기를 누른다 
  2. 비밀번호를 찾기 위해 사용자는 이메일을 작성한 후 서버에서는 이메일 인증을 위해 랜덤 코드를 발급해준다
  3. 사용자가 이메일 인증하는데 성공했다면 서버에서는 사용자에게 임시 비밀번호를 발급해준다
  4. 서버에서 발급한 임시 비밀번호대로 DB 비밀번호를 바꿔준다 
  5. 사용자는 이메일로 임시 비밀번호를 작성하고 로그인을 한다 
  6. 사용자는 비밀번호 변경창에 들어가 임시 비밀번호를 바꿀 수 있다 
  7. 단 DB에 이메일이 존재하지 않을 경우 서버에서 사용자에게 이메일이 존재하지 않는다고 사용자에게 알린다 (가입되지 않은 이메일입니다 )

 

<?
// 임의의 문자열 생성 ( 특수문자 포함 )
function passwordGenerator( $length=12 ){

    $counter = ceil($length/4);
    // 0보다 작으면 안된다.
    $counter = $counter > 0 ? $counter : 1;            

    $charList = array( 
                    array("0", "1", "2", "3", "4", "5","6", "7", "8", "9", "0"),
                    array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"),
                    array("!", "@", "#", "%", "^", "&", "*") 
                );
    $password = "";
    for($i = 0; $i < $counter; $i++)
    {
        $strArr = array();
        for($j = 0; $j < count($charList); $j++)
        {
            $list = $charList[$j];

            $char = $list[array_rand($list)];
            $pattern = '/^[a-z]$/';
            // a-z 일 경우에는 새로운 문자를 하나 선택 후 배열에 넣는다.
            if( preg_match($pattern, $char) ) array_push($strArr, strtoupper($list[array_rand($list)]));
            array_push($strArr, $char);
        } 
        // 배열의 순서를 바꿔준다.
        shuffle( $strArr );

        // password에 붙인다.
        for($j = 0; $j < count($strArr); $j++) $password .= $strArr[$j];
    }
    // 길이 조정
    return substr($password, 0, $length);
}
?>

 

 

 

비밀번호 찾기 프로 버전 디테일과 깊게 파고 들기

 

 

비밀번호 찾기 기능 구현할 때 몇 가지 보완해야 할 포인트가 있어. 다음 사항들을 살펴보자:

  1. 인증 코드 유효 시간: 인증 코드는 한 시간 뒤에 만료되게 설정하는 게 좋아. 이렇게 해서 보안을 더 강화시킬 수 있어.
  2. 임시 비밀번호 말고 새 비밀번호 바로 설정: 사용자가 바로 새 비밀번호를 설정할 수 있는 링크를 이메일로 보내는 게 더 낫다고 생각해. 이메일 링크 클릭하면 바로 비밀번호 재설정 페이지로 가서 새 비밀번호를 입력할 수 있게 해.
  3. 이메일 존재 여부 조심스럽게 처리: 비밀번호 찾기 요청했을 때 해당 이메일이 시스템에 없다고 구체적으로 알려주는 건 피해. 대신 "입력하신 이메일로 재설정 링크를 보냈습니다. 등록되지 않은 이메일은 처리되지 않습니다." 같이 애매하게 알려주는 게 좋아.
  4. 임시 비밀번호로 로그인하면 비밀번호 바로 변경하게 하기: 임시 비밀번호로 로그인하면 바로 비밀번호 변경 페이지로 가서 새 비밀번호로 바꾸도록 강제해.
  5. 비밀번호 정책 제대로 알리기: 비밀번호 바꿀 때 적용되는 정책(최소 길이, 특수 문자 필요 여부 등)을 잘 알려줘서 사용자가 규칙에 맞는 비밀번호 설정하게 해.
  6. 보안 질문 활용하기: 계정 만들 때 보안 질문 설정하게 하고, 비밀번호 찾을 때 이를 추가 인증 수단으로 쓸 수도 있어.

이런 추가적인 조치들로 사용자 계정 보안을 한층 더 강화하고, 비밀번호 찾기 과정에서 발생할 수 있는 보안 문제를 줄일 수 있어.

'PHP' 카테고리의 다른 글

[PHP] phpmailer을 이용한 이메일 전송  (1) 2024.02.02
서비스 약관  (0) 2024.01.24