비밀번호 찾기시 발생하는 문제점
비밀번호 찾기시 비밀번호가 자동으로 바뀌거나 mb_lost_certify컬럼이 비어있는 문제가 발생하는 분들은 아래 내용을 참고하시기 바랍니다.
/bbs/password_lost.php
비밀번호 찾기페이지에서 메일을 입력하면 해당 메일로 비밀번호 재설정 메일이 전송됩니다.
이 메일에는 아이디 소유자가 직접 비밀전호를 번경하려는 것인지 구분하기 위한 난수가 포함된 링크가 있습니다.(다시 해당 홈페이지 password_lost_certify.php 로 접속하는)
본인이라면 해당 링크를 누를 것이고, 다른 누군가가 잘못 입력한 메일로 인해 날라온 메일이라면 이 링크를 누르지 않을 것입니다.
그래서 이 링크를 누르는 자는 오직 메일 주인뿐이어야 하는데 이 링크를 타고 해당 페이지에 접속하는 자가 있었습니다.
바로 메일 제공업체의 크롤러.
크롤러가 메일에 포함된 링크를 타고가서 원하든 원치 않든 이러한 메일이 발송된 경우 비밀번호를 바로 바꿔버리는 일이 일어나고 있습니다.
물론 처음 발송된 메일에는 이 링크를 타고가지 않지만 연속으로 두번 이상 비밀번호 변경 요청시 링크를 타고갑니다.(아마 스팸메일인지 확인차 링크를 타고 들어가는 것 같음)
저의 경우 네이버에 요청해서 크롤러가 그누보드 비밀번호 변경 메일의 링크를 타고가지 않도록 요청했고 네이버에서 조치를 취했다고 하였지만 다른 포탈사이트에서도 동일하게 발생할 수 가능성과 그누보드 근본적인 문제 해결을 위해 다음과 같이 제안합니다.
password_lost2.php에서
기존 코드
// 임시비밀번호와 난수를 mb_lost_certify 필드에 저장
$sql = " update {$g5['member_table']} set mb_lost_certify = '$mb_nonce $mb_lost_certify' where mb_id = '{$mb['mb_id']}' ";
에서 비밀번호 요청시 요청자 ip주소를 특정 컬럼에 저장시킵니다.(새로운 컬럼도 좋지만 저의 경우는 mb_login_ip 컬럼에 넣었습니다. mb_login_ip컬럼이 로그인시 접속한 ip를 저장하는 컬럼으로 알고있고 비밀번호를 찾는 시점이 로그인 전이기 때문에 임시적으로 이 컬럼을 사용해도 무방하다고 판단.)
그 결과
$sql = " update {$g5['member_table']} set mb_lost_certify = '$mb_nonce $mb_lost_certify', mb_login_ip = '{$_SERVER['REMOTE_ADDR']}' where mb_id = '{$mb['mb_id']}' ";
로 수정.
password_lost_certify.php에서
'// 인증 링크는 한번만 처리가 되게 한다.' 주석 위쪽에 다음과 같은 코드 삽입
if($mb['mb_login_ip']!=$_SERVER['REMOTE_ADDR']){
alert('비밀번호 변경 요청 시 ip와 비밀번호 교체 시 ip가 같지 않습니다.\n비밀번호 변경 요청 직후 메일로 보내드린 링크로 접속하시기 바랍니다.\n문제가 계속되는 경우 홈페이지 하단 연락처로 연락주시기 바랍니다.');
}
// 인증 링크는 한번만 처리가 되게 한다.
즉, 비밀번호 변경을 요청하는 ip와 비밀번호 변경 페이지로 접속한 ip가 동일한 경우에만 진행되도록 합니다.
현재까지는 문제없이 잘 작동하고 있습니다.
남아있는 문제 : ip주소가 유동적이라 비밀번호 변경 요청시 ip와 비밀번호 변경페이지 접속시 ip가 다를 수 있습니다. 짧은 시간 내에는 큰 문제가 없을 것 같고, ip가 바뀌더라도 다시 시도하도록 유도하였기 때문에 위 이상의 조치는 취하지 않음.(사실 귀찮아서..)
※참고로 비밀번호 찾기, 쇼핑몰 상품 구매등 이메일 발송이 지연되는 현상의 원인을 찾다가 알게 된 사항입니다. 이메일이 지연되는 원인은 cafe24 호스팅의 이메일 발송 데몬 문제였습니다.
출처: https://sir.kr/g5_tip/9403
'사이트관리' 카테고리의 다른 글
관리자용 게시판 체크박스 크기 변경 소스 (0) | 2018.10.20 |
---|---|
다국어지원 사이트 소스 (0) | 2018.10.18 |
사이트 대표 로고 위젯 (0) | 2018.10.18 |
탭메뉴 셈플 (0) | 2018.10.18 |
html 태그를 숨긴 스팸게시글 처리 보완 (0) | 2018.10.03 |
html 색상표 (0) | 2018.09.15 |
이미지에 워터마크 넣기 (0) | 2018.09.06 |
특정 게시판을 홈페이지 초기화면으로 (0) | 2018.08.22 |