계정 찾기

손님이 비밀번호를 잊었을 때 다시 들어오게 해 주는 길이에요. 정문보다 여기가 약하면 도둑은 비밀번호를 풀 이유가 없어요. 이 길로 그냥 들어와요.

쉽게 말하면

가게에 문이 두 개 있어요. 정문은 손님이 열쇠로 여는 문이고, 계정 찾기는 열쇠를 잃어버린 손님을 위해 열어 둔 뒷문이에요. 사장님은 정문 자물쇠에만 돈을 써요. 도둑은 정문을 보지도 않아요. 뒷문이 있는데 왜 열쇠를 따겠어요. 그래서 자물쇠 값은 두 문 중 약한 쪽이 정해요.

비밀번호를 아무리 길고 어렵게 만들어도, 되찾는 길이 헐거우면 그 규칙은 값을 못 해요. 비밀번호 규칙 정하기와 이 문서는 한 쌍이에요.

많이 만드는 방식
"비밀번호 찾기" · 원래 비밀번호를 메일로 보내 줌 · 또는 임시 비밀번호를 문자로 · 만료 시간 없음 · 바꾼 뒤에도 옛 로그인은 그대로

손님은 편해요. 그런데 원래 비밀번호를 보낼 수 있다는 건 그 값을 그대로 갖고 있다는 뜻이에요. 메일함 하나만 뚫리면 계정이 통째로 넘어가요.

값을 치른 방식
"비밀번호 재설정" · 한 번 쓰면 사라지는 링크를 보냄 · 짧은 시간 뒤 저절로 만료 · 새 비밀번호는 손님이 직접 입력 · 바꾸는 순간 다른 기기 로그인 전부 해제

손이 한 번 더 가요. 대신 링크가 새도 시간이 지나면 쓸모가 없고, 이미 들어와 있던 침입자도 그 자리에서 같이 끊겨요.

손님이 잃어버리는 것은 하나가 아니에요

"비밀번호를 잊었어요"는 여러 상황이 한 문장으로 들어오는 거예요. 상황마다 열어 줘야 하는 길이 달라요. 다섯 가지를 미리 갈라 두면 문의가 왔을 때 헤매지 않아요.

손님이 잃어버린 것열어 줘야 하는 길여기서 벌어지는 사고
비밀번호만 잊음가입한 메일로 재설정 링크를 보내요. 가장 흔하고 가장 안전한 경우예요링크에 만료가 없으면 몇 달 뒤 그 메일을 본 사람이 그대로 들어와요
가입할 때 쓴 메일 주소를 잊음이름이나 전화번호로 "가입된 계정이 있는지"만 알려 줘요. 주소 전체를 보여 주지 않아요메일 주소를 통째로 보여 주면, 남의 계정 주소를 알아내는 도구가 돼요
메일함 자체를 못 씀다른 확인 수단으로 넘겨요. 문자 인증이나 미리 등록해 둔 예비 연락처예요여기가 제일 무른 곳이에요. 확인 수단이 약하면 이 통로가 정문이 돼요
2단계 인증 기기를 잃어버림가입 때 준 예비 코드로 풀어요. 그것도 없으면 사람이 확인하는 절차로 가요"폰을 바꿨어요" 한마디로 풀어 주면 2단계 인증을 켠 의미가 사라져요
소셜 로그인으로 가입한 걸 잊음재설정이 아니라 "카카오로 가입하셨어요"라고 알려 줘요비밀번호를 새로 만들게 해 주면 한 사람에게 계정이 두 개 생겨요

세 번째 줄이 진짜 문이에요

메일함을 못 쓰는 손님에게 열어 주는 그 우회로가, 공격자가 노리는 바로 그 길이에요. 정문 자물쇠를 세 개 달아도 여기가 "이름과 생년월일만 맞으면 통과"면 전체 잠금 수준은 그 한 줄로 정해져요.

안전한 되찾기의 순서

만드는 사람이 개발자든 AI든, 순서는 같아요. 여섯 걸음이고 사장님이 확인해야 할 건 각 걸음의 결과가 아니라 그 걸음이 있는지 없는지예요.

  1. 1요청을 받아요. 손님이 메일 주소를 넣어요. 이때 화면은 주소가 있든 없든 똑같은 문구를 보여 줘요. 다르게 보이면 그 화면이 가입자 명단 조회기가 돼요.
  2. 2한 번짜리 링크를 만들어요. 아무도 못 맞히는 긴 값이어야 하고, 손님 메일 주소나 가입 날짜에서 계산되는 값이면 안 돼요.
  3. 3보내고 시간을 걸어요. 짧게 잡아요. 하루를 넘기지 않는 게 보통이에요. 오래 살아 있는 링크는 잊힌 열쇠가 돼요.
  4. 4들어오면 그 링크를 그 자리에서 죽여요. 한 번 쓴 링크가 두 번 통하면, 손님 뒤를 따라 들어오는 사람이 생겨요.
  5. 5새 비밀번호를 손님이 직접 넣어요. 서비스가 만들어 보내 주지 않아요. 저장은 비밀번호 해싱 방식으로 해요.
  6. 6바꾸는 순간 다른 기기 로그인을 전부 끊어요. 이미 들어와 있던 침입자를 밀어내는 유일한 걸음이에요. 그리고 손님에게 "비밀번호가 바뀌었어요" 알림을 보내요.

여섯 번째가 제일 많이 빠져요

재설정은 되는데 옛 로그인이 살아 있는 서비스가 정말 많아요. 그러면 손님이 비밀번호를 바꿔도 침입자는 계속 접속한 상태예요. 세션과 쿠키를 만들 때 "비밀번호가 바뀌면 전부 무효"를 같이 정해 두면 돼요.

여기서 나는 사고

보이는 증상실제로 벌어진 일지금 할 일
"메일이 안 왔어요" 문의가 몰려요메일이 스팸함에 들어가고 있어요. 되찾기 메일은 특히 잘 걸러져요메일 발송과 도달률에서 발신 도메인 인증을 먼저 봐요
재설정 요청 메일이 한 손님에게 수십 통요청 횟수를 안 막았어요. 남의 주소를 넣어 괴롭히는 데 쓰이고 있어요같은 주소·같은 접속처의 요청 횟수를 제한해요. 스팸과 어뷰징 대응과 같은 장치예요
손님이 "내가 안 했는데 비밀번호가 바뀌었대요"누군가 되찾기를 실행했어요. 메일함이 뚫렸거나 링크가 샜어요그 계정의 로그인을 전부 끊고, 최근 접속 기록과 주문 내역을 같이 봐요
탈퇴한 직원이 아직 관리자 화면에 들어와요계정은 지웠는데 되찾기 통로에 남은 예비 연락처가 살아 있었어요예비 연락처와 권한을 같이 회수해요. 딱 필요한 만큼만 권한 순서를 따라요
손님 계정에 남의 주문이 섞여 있어요본인 확인이 느슨해서 다른 사람이 그 계정을 열었어요그 계정 하나가 아니라 되찾기 절차 전체를 봐야 해요. 같은 방법이 이미 여러 번 쓰였을 수 있어요

장면 1 · 문의 창구에 들어온 글

폰을 새로 바꿔서 인증 문자를 못 받아요. 주문한 이름이랑 전화번호 불러 드릴 테니 그냥 풀어 주시면 안 될까요.

이 요청 자체는 아주 정상이에요. 진짜 손님도 이렇게 말해요. 위험한 건 답하는 쪽에 정해진 절차가 없다는 것이에요. 이름과 전화번호는 주문서를 한 번 본 사람이면 아는 값이라, 그것만으로 열어 주면 확인을 안 한 것과 같아요. 미리 정해 두세요. 무엇을 물을지, 몇 개가 맞아야 통과인지, 그리고 누가 그 결정을 하는지예요.

손님에게 보이는 문구

되찾기 화면의 문구는 친절함과 보안이 정면으로 부딪히는 자리예요. 친절하게 쓰면 대개 정보가 새요. 자주 쓰는 네 문장을 고쳐 볼게요.

상황이렇게 쓰면 새요이렇게 써요
없는 주소를 넣었을 때"가입되지 않은 메일입니다""가입된 계정이면 메일을 보냈어요. 몇 분 안에 안 오면 스팸함을 봐 주세요"
링크가 만료됐을 때"만료된 링크입니다" 만 띄우고 끝"이 링크는 시간이 지나 못 써요. 다시 요청하면 새 링크를 보내 드려요" 와 요청 버튼
새 비밀번호를 정할 때"영문 대소문자·숫자·특수문자를 섞으세요""길게 쓰는 게 가장 안전해요. 다른 곳에서 쓰던 것과 다르게 해 주세요"
재설정이 끝났을 때"완료되었습니다" 한 줄"바뀌었어요. 다른 기기에서는 다시 로그인해야 해요. 본인이 한 게 아니면 바로 알려 주세요"

확인해 보세요

쇼핑몰 되찾기 화면에서 손님이 가입 안 된 메일 주소를 넣었어요. 화면에 무엇을 보여 줄까요?

AI에게 그대로 보낼 문장

직접 만드는 중이면 아래 문장을 그대로 옮기면 돼요. 전문어를 몰라도 돼요. 무엇을 지키고 싶은지만 말하면 나머지는 만드는 쪽이 알아서 해요.

내가 원하는 것그대로 보낼 문장
되찾기 자체를 붙이고 싶어요"비밀번호 재설정을 붙여 주세요. 원래 비밀번호를 보내지 말고, 한 번만 쓸 수 있고 짧게 만료되는 링크로 해 주세요."
가입자 명단이 새는 게 걱정돼요"가입된 주소든 아니든 화면에 같은 안내가 뜨게 해 주세요."
괴롭힘 요청을 막고 싶어요"같은 주소로 짧은 시간에 여러 번 요청하면 더 못 보내게 막아 주세요."
바꾼 뒤가 걱정돼요"비밀번호를 바꾸면 다른 기기의 로그인이 전부 풀리게 해 주세요. 그리고 손님에게 변경 알림 메일을 보내 주세요."
문의 창구로 오는 경우도 정하고 싶어요"사람이 손으로 풀어 주는 경우에 무엇을 확인해야 하는지 목록으로 만들어 주세요. 그 확인 기록도 남게 해 주세요."

직접 해보기

마지막 줄부터 붙여 보세요

다섯 줄 중 하나만 고른다면 마지막 줄이에요. 사람이 손으로 열어 주는 통로가 가장 자주 뚫리는데, 대부분 그 통로에 적어 둔 절차가 없어서예요. 스튜디오에서 만들고 있는 것이 있으면 그 자리에 그대로 붙여 보세요.

스튜디오에서 적어 보기

자주 묻는 것

Q. 임시 비밀번호를 문자로 보내 주는 방식은 안 되나요?
쓸 수는 있지만 조건이 붙어요. 그 임시 값으로 들어온 다음 화면에서 반드시 새 비밀번호를 정하게 해야 하고, 임시 값도 짧게 만료돼야 해요. 그냥 임시 값 그대로 계속 쓰게 두면, 문자 한 통을 본 사람이 계정을 계속 쓰는 상태가 돼요.
Q. "어릴 때 살던 동네는?" 같은 질문을 확인 수단으로 써도 될까요?
권하지 않아요. 답이 대개 사회 관계망에 이미 적혀 있거나 아는 사람이면 맞힐 수 있어요. 게다가 손님 본인이 몇 달 뒤에 자기 답을 잊어요. 확인이 한 겹 더 필요하면 2단계 인증이나 예비 코드 쪽이 나아요.
Q. 메일 주소를 바꿔 달라는 요청은 어떻게 처리하나요?
가장 조심할 요청이에요. 이걸 통과시키면 계정 주인이 통째로 바뀌어요. 새 주소로만 확인하지 말고 원래 주소로도 알림을 보내서 본인이 아니면 되돌릴 시간을 줘요. 바꾼 직후 얼마 동안은 되찾기 통로를 잠가 두는 것도 흔한 방식이에요.
Q. 관리자인 제 계정도 같은 방식으로 두면 되나요?
아니요. 관리자 계정은 되찾기 통로를 더 좁게 두세요. 관리자 화면은 뚫리면 손님 정보 전체가 걸리니까요. 권한과 역할에서 관리자와 손님 계정을 나누는 이야기를 같이 보세요.
Q. 손님이 되찾기를 자꾸 못 해서 문의가 늘어요. 어떻게 줄이죠?
대부분 메일 도달 문제예요. 스팸함 안내 한 줄을 화면과 메일 제목에 넣는 것만으로 문의가 눈에 띄게 줄어요. 그다음은 가입할 때 소셜 로그인을 함께 쓰게 하는 거예요. 잊을 비밀번호가 아예 없으면 되찾을 일도 줄어요.
Q. 기록은 어디까지 남겨야 하나요?
언제 요청이 들어왔고 언제 성공했는지, 어떤 접속처였는지 정도는 남겨요. 새 비밀번호 값 자체는 절대 남기지 않아요. 관리자가 손으로 풀어 준 건은 따로 표시해 두세요. 누가 무엇을 했나 기록에서 남길 것과 남기면 안 될 것을 갈라 놨어요.

더 깊이 (안 읽어도 괜찮아요)

링크는 왜 한 번만 통해야 하나 · 재설정 링크는 그 순간만큼은 비밀번호와 똑같은 힘을 가진 값이에요. 그런데 링크는 비밀번호와 달리 여러 곳에 자국이 남아요. 메일함에 남고, 손님이 화면을 캡처해 문의에 첨부하기도 하고, 공용 컴퓨터 주소창 기록에도 남아요. 한 번 쓰면 죽게 만들면 그 자국들이 전부 쓸모없는 종이가 돼요. 이게 만료 시간보다 더 중요한 장치예요.

되찾기가 2단계 인증을 무력화하는 경로 · 2단계 인증을 켠 계정이 뚫리는 대표 경로가 되찾기예요. 되찾기로 비밀번호를 바꿀 때 2단계 확인을 건너뛰게 만들어 두면, 공격자는 메일함만 잡으면 되니까 두 번째 잠금이 없는 것과 같아져요. 그래서 되찾기 뒤에도 두 번째 확인을 그대로 요구하거나, 최소한 예비 코드를 요구하는 쪽으로 만들어요. 편의를 위해 이 한 줄을 빼는 순간 잠금 하나가 통째로 사라져요.

사람이 손으로 열어 주는 통로의 값 · 규모가 커지면 자동 되찾기로 안 풀리는 손님이 반드시 생겨요. 그래서 사람이 확인하고 열어 주는 통로를 아예 없앨 수는 없어요. 대신 이렇게 다뤄요. 확인 항목을 미리 문서로 정하고, 그 결정을 할 수 있는 사람을 좁히고, 열어 준 건은 전부 기록으로 남겨요. 이 셋이 없으면 그 통로는 절차가 아니라 그날 담당자의 기분이에요. 손님 응대와 불만의 답변 틀에 이 항목을 같이 넣어 두면 실제로 지켜져요.

이것만 기억하세요

  • ·잠금 수준은 정문과 뒷문 중 약한 쪽이 정해요. 비밀번호 규칙만 조이는 건 절반이에요
  • ·원래 비밀번호를 보내 주지 않아요. 한 번 쓰면 죽고 짧게 만료되는 링크로 해요
  • ·가입된 주소든 아니든 화면 문구는 같아야 해요. 다르면 그 화면이 명단 조회기가 돼요
  • ·비밀번호를 바꾸는 순간 다른 기기 로그인을 전부 끊어요. 여기가 가장 많이 빠져요
  • ·사람이 손으로 열어 주는 통로는 확인 항목·결정권자·기록 셋을 미리 정해 둬요
VibeCampus새 빌드