javascript
리캡차 추가 (보안관련)
리캡차 적용 배경
기존에는 로그인 버튼을 클릭하면 바로 서버로 요청이 전달되었기 때문에,
봇(로봇)을 이용한 자동화 공격에 취약한 문제가 있었다.
이 취약점을 해결하기 위해 이번에 reCAPTCHA v3를 도입했다.
이를 사용하면 로그인 요청을 보내는 사용자가 사람인지, 봇인지 판별할 수 있다.
리캡차 정보 흐름 정리
1. 클라이언트에서 스크립트 로드
-
페이지에 Google reCAPTCHA 스크립트를 불러온다.
-
이 스크립트는
grecaptcha객체를 전역에 제공한다.
2. 클라이언트에서 토큰 생성
-
로그인 버튼을 클릭하면 클라이언트에서
grecaptcha.execute(사이트키)를 호출한다. -
구글 리캡차 서버로부터 토큰(token) 을 받아온다.
-
클라이언트는 비밀번호와 함께
token을 서버로 전송한다.
3. 서버에서 토큰 검증
-
서버는 전달받은
token을 Google reCAPTCHA 검증 서버에 다시 요청한다. -
검증 서버는 해당 토큰이 사람이 생성한 것인지, 봇이 생성한 것인지 점수와 함께 알려준다.
4. 판별 후 처리
-
결과가 "봇"이면 → 요청을 즉시 차단
-
결과가 "사람"이면 → 기존의 로그인 절차를 계속 진행