reCAPTCHA v2 적용 후 잘 사용되다 일정시간 지나면 오류가 납니다.
reCAPTCHA v2로 적용한 후 하루 정도는 잘 사용되는데 그 이후 글을 남기거나 회원가입할때
갑자기 '자동등록방지 숫자가 틀렸습니다.'라고 나오면 등록이 안됩니다.
처음부터 안되면 소스의 문제 이겠거니 싶은데 왜 하루정도 사용한 이후에 이런 증상이 나타날까요?
그래서 다른 구글 아이디로 새로운 키값 받아서 변경하면 또 하루정도는 잘되다가 똑같은 증상이 나타납니다.
선배님들의 도움 부탁 드립니다 ^^
답변 3개
검증 결과를 기록하실 때, 진단용으로 siteverify를 한 번 더 호출하지 않도록 확인해 보세요. Google 문서상 응답 토큰은 2분 동안 유효하고 한 번만 검증할 수 있습니다. 정상 처리에서 이미 소비한 토큰을 로그 확인용 호출로 다시 보내면 timeout-or-duplicate가 생겨 원인 판단을 흐릴 수 있습니다.
다음처럼 한 번의 제출 흐름 안에서 기록 위치를 구분하시면 도움이 됩니다.
- 기존 검증 요청을 한 번 보내고, 그 요청이 반환한 JSON을 그대로 읽습니다.
- 추가 요청 없이 그 응답의 success와 error-codes를 서버 로그에 기록합니다. 비밀키·응답 토큰 원문은 기록하지 않습니다.
- 브라우저 Network에서도 한 번 등록을 눌렀을 때 폼 전송이나 Ajax가 중복 발생하는지 확인합니다. 전송 전 검사와 실제 저장 단계에서 각각 같은 토큰을 검증하는 구조인지도 함께 확인합니다.
중복 호출이 확인되지 않는다면 이 가능성은 제외하고 기존 답변의 통신 오류·할당량·그누보드 검증 분기 점검을 이어가시면 됩니다. 현재 글만으로 이것을 원인으로 단정하는 것은 아닙니다.
공식 근거: reCAPTCHA 응답 검증과 토큰 유효기간
하루쯤 지나면 안 된다는 증상만으로 키가 만료됐다고 판단하기는 어려워요. 지금 보이는 그누보드 안내 문구보다, 서버가 Google에서 받은 검증 결과를 먼저 확인하는 게 좋겠습니다.
1. 새로 연 가입/글쓰기 화면에서 다시 체크하고 바로 등록해도 실패하는지 먼저 구분해 보세요. reCAPTCHA의 응답 토큰은 유효기간이 2분이고 한 번만 검증할 수 있습니다. 오래 열어 둔 화면이나 같은 토큰의 재검증이면 timeout-or-duplicate가 나올 수 있어요.
2. 서버의 siteverify 응답에서 success와 error-codes를 확인해 보세요.
- timeout-or-duplicate: 토큰 만료 또는 이미 사용한 토큰
- missing-input-response / invalid-input-response: 응답 토큰 누락 또는 잘못된 형식
- invalid-input-secret: 서버에서 사용하는 비밀키가 잘못됐거나 형식이 맞지 않음
HTTP 요청 자체가 실패했다면 PHP 쪽 통신 오류도 따로 확인해야 합니다. 비밀키나 응답 토큰을 화면에 출력하지 말고, 오류 코드만 서버 쪽에서 확인해 주세요.
3. 새 키를 넣었을 때만 잠깐 정상이라면 해당 키의 관리자 콘솔에서 요청량과 제한 경고도 같이 살펴보세요. Google은 v2의 할당량 초과 때 위젯에 안내가 표시될 수 있다고 설명합니다. 다만 현재 글만으로 할당량 문제라고 확정할 수는 없습니다.
공식 문서:
https://developers.google.com/recaptcha/docs/verify
https://developers.google.com/recaptcha/docs/faq
사용 중인 그누보드 버전, reCAPTCHA 적용 플러그인/방법, 위의 success와 error-codes 값이 있으면 원인을 좀 더 좁힐 수 있을 것 같아요. 비밀키·응답 토큰·사용자 IP는 게시하지 않으셔도 됩니다.
답변을 작성하려면 로그인이 필요합니다.