2017-12-03 1 views
2

이것은 Q &입니다.이 질문은 답변과 함께 게시 할 것입니다. 이것의 주된 이유는 recaptcha V2를 검증하는 가장 쉬운 방법을 찾기 위해 꽤 많은 시간을 소비했기 때문입니다. 그래서 개발자들의 시간 낭비를 피하기 위해 지식을 공유 할 것입니다. reCAPTCHA V2 Java (Servlet)의 유효성을 검사하는 방법

어떻게 구글 reCAPTCHA를 V2 또는 자바보이지 않는 reCAPTCHA를서버 측 유효성 검사을 할까?

답변

1

나는 이것을 위해 org.json 라이브러리를 사용하고 있습니다. jar 파일을 here에서 가져 오거나 docs을 읽어보십시오. jar 파일을 프로젝트에 추가하고 다음 클래스를 가져 오십시오.

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.nio.charset.Charset; 
import org.json.JSONObject; 

검증을 위해 다음 방법을 사용하십시오.

/** 
* Validates Google reCAPTCHA V2 or Invisible reCAPTCHA. 
* @param secretKey Secret key (key given for communication between your site and Google) 
* @param response reCAPTCHA response from client side. (g-recaptcha-response) 
* @return true if validation successful, false otherwise. 
*/ 
public static boolean isCaptchaValid(String secretKey, String response) { 
    try { 
     String url = "https://www.google.com/recaptcha/api/siteverify?" 
       + "secret=" + secretKey 
       + "&response=" + response; 
     InputStream res = new URL(url).openStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(res, Charset.forName("UTF-8"))); 

     StringBuilder sb = new StringBuilder(); 
     int cp; 
     while ((cp = rd.read()) != -1) { 
      sb.append((char) cp); 
     } 
     String jsonText = sb.toString(); 
     res.close(); 

     JSONObject json = new JSONObject(jsonText); 
     return json.getBoolean("success"); 
    } catch (Exception e) { 
     return false; 
    } 
} 

전화 아래와 같이 위의 방법이 도움이

if(isCaptchaValid("enter_your_key_here", request.getParameter("g-recaptcha-response"))){ 
    //valid 
} 

희망. 건배!

+1

코드에 대한 의견을 듣고 싶다면 [code review site] (https://codereview.stackexchange.com/)에 게시 할 수 있습니다. – markspace

+0

@markspace 확실 ... 고마워! –

관련 문제