- 안드로이드에서 사용자가 비밀번호 찾기를 누른다
- 비밀번호를 찾기 위해 사용자는 이메일을 작성한 후 서버에서는 이메일 인증을 위해 랜덤 코드를 발급해준다
- 사용자가 이메일 인증하는데 성공했다면 서버에서는 사용자에게 임시 비밀번호를 발급해준다
- 서버에서 발급한 임시 비밀번호대로 DB 비밀번호를 바꿔준다
- 사용자는 이메일로 임시 비밀번호를 작성하고 로그인을 한다
- 사용자는 비밀번호 변경창에 들어가 임시 비밀번호를 바꿀 수 있다
- 단 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);
}
?>
비밀번호 찾기 프로 버전 디테일과 깊게 파고 들기
비밀번호 찾기 기능 구현할 때 몇 가지 보완해야 할 포인트가 있어. 다음 사항들을 살펴보자:
- 인증 코드 유효 시간: 인증 코드는 한 시간 뒤에 만료되게 설정하는 게 좋아. 이렇게 해서 보안을 더 강화시킬 수 있어.
- 임시 비밀번호 말고 새 비밀번호 바로 설정: 사용자가 바로 새 비밀번호를 설정할 수 있는 링크를 이메일로 보내는 게 더 낫다고 생각해. 이메일 링크 클릭하면 바로 비밀번호 재설정 페이지로 가서 새 비밀번호를 입력할 수 있게 해.
- 이메일 존재 여부 조심스럽게 처리: 비밀번호 찾기 요청했을 때 해당 이메일이 시스템에 없다고 구체적으로 알려주는 건 피해. 대신 "입력하신 이메일로 재설정 링크를 보냈습니다. 등록되지 않은 이메일은 처리되지 않습니다." 같이 애매하게 알려주는 게 좋아.
- 임시 비밀번호로 로그인하면 비밀번호 바로 변경하게 하기: 임시 비밀번호로 로그인하면 바로 비밀번호 변경 페이지로 가서 새 비밀번호로 바꾸도록 강제해.
- 비밀번호 정책 제대로 알리기: 비밀번호 바꿀 때 적용되는 정책(최소 길이, 특수 문자 필요 여부 등)을 잘 알려줘서 사용자가 규칙에 맞는 비밀번호 설정하게 해.
- 보안 질문 활용하기: 계정 만들 때 보안 질문 설정하게 하고, 비밀번호 찾을 때 이를 추가 인증 수단으로 쓸 수도 있어.
이런 추가적인 조치들로 사용자 계정 보안을 한층 더 강화하고, 비밀번호 찾기 과정에서 발생할 수 있는 보안 문제를 줄일 수 있어.
'PHP' 카테고리의 다른 글
[PHP] phpmailer을 이용한 이메일 전송 (1) | 2024.02.02 |
---|---|
서비스 약관 (0) | 2024.01.24 |