javascript

리캡차 추가 (보안관련)

리캡차 적용 배경

기존에는 로그인 버튼을 클릭하면 바로 서버로 요청이 전달되었기 때문에,
봇(로봇)을 이용한 자동화 공격에 취약한 문제가 있었다.
이 취약점을 해결하기 위해 이번에 reCAPTCHA v3를 도입했다.
이를 사용하면 로그인 요청을 보내는 사용자가 사람인지, 봇인지 판별할 수 있다.


리캡차 정보 흐름 정리

1. 클라이언트에서 스크립트 로드

  • 페이지에 Google reCAPTCHA 스크립트를 불러온다.

  • 이 스크립트는 grecaptcha 객체를 전역에 제공한다.

2. 클라이언트에서 토큰 생성

  • 로그인 버튼을 클릭하면 클라이언트에서
    grecaptcha.execute(사이트키)를 호출한다.

  • 구글 리캡차 서버로부터 토큰(token) 을 받아온다.

  • 클라이언트는 비밀번호와 함께token 을 서버로 전송한다.

3. 서버에서 토큰 검증

  • 서버는 전달받은 token을 Google reCAPTCHA 검증 서버에 다시 요청한다.

  • 검증 서버는 해당 토큰이 사람이 생성한 것인지, 봇이 생성한 것인지 점수와 함께 알려준다.

4. 판별 후 처리

  • 결과가 "봇"이면 → 요청을 즉시 차단

  • 결과가 "사람"이면 → 기존의 로그인 절차를 계속 진행


참조
내가 작성한 코드
구글 리캡처