비밀번호 재설정 보안, 재설정 메일·링크·절차 점검 7가지
비밀번호 재설정 보안은 같은 안내 문구, 한 번만 쓰는 짧은 유효기간 링크, 변경 알림 세 가지가 기본입니다. 이 글에서는 홈페이지 회원 기능의 비밀번호 찾기 절차를 운영자가 점검할 7가지 항목과 문제가 의심될 때 할 일을 정리했습니다.
비밀번호 재설정이 보안 약점이 되는 이유
회원 기능이 있는 홈페이지는 대부분 비밀번호를 잊은 사람을 위한 재설정 기능을 둡니다. 이 기능은 비밀번호 없이 계정을 되찾게 해 주는 통로이므로, 절차가 허술하면 남이 그 통로로 계정을 가져갈 수 있습니다. 로그인 화면을 아무리 단단하게 만들어도 재설정 절차가 약하면 그쪽으로 우회됩니다.
문제는 대개 작은 부분에서 생깁니다. 가입한 이메일인지 아닌지 다른 문구를 보여 주거나, 재설정 링크가 며칠씩 유효하거나, 비밀번호가 바뀌어도 본인에게 알리지 않는 경우입니다. 재설정 절차는 만들 때 한 번 정하고 잊기 쉬운 기능이라 따로 점검할 필요가 있습니다.
재설정 절차의 기본 흐름
일반적인 흐름은 회원이 이메일을 입력하면 재설정 링크가 메일로 오고, 그 링크를 눌러 새 비밀번호를 정한 뒤 다시 로그인하는 순서입니다. 점검은 이 흐름의 요청, 링크, 변경, 알림 네 지점에서 이루어집니다.
비밀번호 재설정 보안 점검 7가지
아래 일곱 가지는 OWASP의 비밀번호 찾기 기능 보안 가이드(Forgot Password Cheat Sheet)가 권하는 내용을 운영자가 확인할 수 있는 항목으로 정리한 것입니다. 개발 지식이 없어도 직접 재설정을 해 보면서 대부분 확인할 수 있습니다.
- 같은 안내 문구: 가입한 이메일과 가입하지 않은 이메일을 넣었을 때 같은 문구가 나오는지 확인합니다. 문구가 다르면 누가 회원인지 알아낼 수 있습니다.
- 요청 횟수 제한: 같은 이메일로 짧은 시간에 재설정을 여러 번 요청하면 제한이 걸리는지 확인합니다. 제한이 없으면 회원에게 메일 폭탄이 갈 수 있습니다.
- 추측할 수 없는 링크: 재설정 링크에 들어 있는 값이 회원 번호나 날짜처럼 규칙적인 값이 아닌지 개발자에게 확인합니다.
- 짧은 유효기간과 한 번 사용: 링크를 한 번 쓰면 다시 열리지 않는지, 일정 시간이 지나면 만료되는지 확인합니다.
- 우리 도메인 링크: 재설정 메일 속 링크가 항상 우리 사이트 주소로 시작하는지 확인합니다.
- 변경 알림 메일: 비밀번호가 바뀌면 본인에게 알림 메일이 가고, 그 메일에 새 비밀번호가 적혀 있지 않은지 확인합니다.
- 변경 후 처리: 비밀번호를 바꾼 뒤 자동으로 로그인되지 않고, 다른 기기의 로그인 상태를 끝낼지 선택하거나 자동으로 끝나는지 확인합니다.
그림의 1~2번은 요청 단계, 3~5번은 링크, 6~7번은 변경과 알림 단계에 해당합니다. 세 번째 항목처럼 화면만 봐서 알기 어려운 부분은 개발자나 유지보수 업체에 확인을 요청합니다.
보안 질문만으로 재설정하는 방식은 피합니다
출신 학교나 좋아하는 음식 같은 보안 질문은 다른 사람이 알아내기 쉬운 경우가 많습니다. OWASP 가이드도 보안 질문을 유일한 재설정 수단으로 쓰지 말고 다른 방식에 더하는 보조 수단으로만 쓰라고 권합니다.
재설정 방식 비교
아래 표는 홈페이지에서 쓰는 재설정 방식을 장점과 주의할 점으로 비교한 것입니다.
| 방식 | 장점 | 주의할 점 |
|---|---|---|
| 이메일 재설정 링크 | 가장 널리 쓰이고 구현이 쉬움 | 유효기간·한 번 사용·우리 도메인 확인 |
| 이메일·문자 인증번호 | 링크를 누르지 않아 편함 | 입력 횟수 제한, 문자 발송 비용 남용 대비 |
| 임시 비밀번호 발송 | 회원이 바로 로그인 가능 | 메일에 비밀번호가 남음, 피하는 편이 좋음 |
| 보안 질문 | 별도 연락 수단이 필요 없음 | 단독 사용은 피하고 보조로만 |
표의 임시 비밀번호 방식은 오래된 홈페이지에서 아직 볼 수 있습니다. 메일함에 비밀번호가 그대로 남기 때문에, 리뉴얼이나 유지보수 때 재설정 링크 방식으로 바꾸는 것을 검토합니다. 회원 비밀번호 규칙 자체는 회원 비밀번호 정책 글에서 다룹니다.
재설정 절차가 악용된 것 같을 때
회원이 비밀번호를 바꾼 적이 없는데 변경 알림을 받았다고 문의하면, 재설정 절차나 이메일 계정이 악용됐을 수 있습니다. 아래 순서로 대응합니다.
- 해당 계정의 로그인 상태를 모두 끝내고, 아직 쓰지 않은 재설정 링크를 무효로 합니다.
- 회원과 다른 연락 수단으로 본인 확인을 한 뒤 비밀번호를 다시 정하게 합니다.
- 최근에 바뀐 이메일·연락처가 있다면 본인이 바꾼 것인지 확인합니다.
- 재설정 요청 기록과 로그인 기록에서 같은 시기에 다른 계정에도 비슷한 일이 있었는지 봅니다.
- 절차의 약점이 확인되면 위 7가지 항목 기준으로 고칩니다.
그림의 첫 단계에서 남아 있는 로그인 상태를 끝내야 이미 들어온 사람이 계속 머무르지 못합니다. 새 기기 로그인을 알려 주는 기능도 함께 두면 이런 일을 더 빨리 알아차릴 수 있으며, 자세한 내용은 로그인 알림 글에서 다룹니다.
디코랩이 돕는 방식
디코랩은 웹사이트 취약점 점검 서비스와 운영 중인 사이트의 유지보수를 맡고 있습니다. 회원 기능의 로그인과 비밀번호 찾기 절차 점검은 웹사이트 취약점 점검 서비스에서 범위를 상담할 수 있습니다.
자주 묻는 질문
재설정 링크 유효기간은 얼마가 적당한가요?
정해진 하나의 기준은 없지만, 회원이 메일을 받고 바로 쓸 수 있을 만큼 짧게 정하는 것이 원칙입니다. 며칠씩 유효한 링크는 메일함이 털렸을 때 위험해집니다.
가입하지 않은 이메일이라고 알려 주면 친절하지 않나요?
친절해 보이지만 누가 회원인지 알아내는 데 쓰일 수 있습니다. "가입된 이메일이라면 안내 메일을 보냈습니다"처럼 같은 문구를 쓰는 것이 안전합니다.
소개용 홈페이지에도 해당되나요?
회원 기능이 없다면 이 점검은 관리자 계정의 비밀번호 찾기 기능에만 해당합니다. 관리자 계정 보호는 2단계 인증과 함께 확인하세요.
회원 기능의 비밀번호 찾기 절차를 점검받고 싶다면 디코랩 프로젝트 문의로 사이트 주소를 알려 주세요.
댓글0
댓글 작성 권한이 없습니다