[security] 이 확인란은 어떻게 작동하며 어떻게 사용합니까?

최근 oneplusone 웹 사이트 https://account.oneplus.net/sign-up 에 가입했는데이 확인란이 표시됩니다.

체크 박스 수정

어떻게 작동하며 내 사이트에서 어떻게 사용할 수 있습니까? 그 비밀스러운 단어 / 숫자보다 훨씬 낫습니다 🙂

recaptcha 사이트에는 새로운 recaptcha 방법이 언급되어 있지 않습니다 … https://www.google.com/recaptcha/intro/index.html



답변

reCAPTCHA 용 베타 API입니다. JS API 소스 인 https://www.google.com/recaptcha/api.js에서 ‘API2’를 참조 하여 수집합니다 . 그리고 나는 또한 이것을 발견했다 : http://jaswsinc.com/recaptcha-ads/ 분명히 그들은 그들의 “CAPPACHA reCAPTCHA”의 초대 전용 베타를 했으므로 .. 당신은 아마 그것을 작동시킬 수 없을 것입니다. 귀하의 사이트. 베타를 선택하는 방법에 대한 정보를 찾을 수 없지만 “No CAPTCHA reCAPTCHA beta”를 검색하면 Google에서 이메일을 수신하도록하는 사람들이 많이 있습니다.

베타에 들어갈 장소를 찾으면 공유하십시오! 그렇지 않으면 2015 년에 공개 버전이 출시 될 것 같습니다 …


답변

이 항목은 원래 질문에 대한 답변은 아니지만 유사한 솔루션을 구현하는 데 도움이됩니다. @IanM이 말했듯이 체크 박스 recaptcha는 베타 단계이며 초대 없이는 사용할 수 없습니다.

중요 편집 Google은 새로운 reCAPTCHA를 도입했습니다

이것은 JavaScript 기반 보안 문자입니다.

대부분의 스팸봇은 JavaScript를 실행하지 않으며 표시된 텍스트와 DOM 또는 필요한 조치 간의 상관 관계를 식별 할 수 없으므로 확인란을 클릭 할 수 없습니다.

확인란이 전혀 없으며 CSS 스타일이있는 div 요소 일뿐입니다. Spambots가 양식 입력 요소를 채우려 고하지만 보안 문자에 입력이 없습니다. 확인 표시는 또 다른 div (css 클래스)입니다.

상자를 클릭하면 ajax 요청이 서버에 div가 클릭되었음을 알리고 서버는이 정보를 임시 저장소에 저장합니다 (이 토큰은 사람에 의해 활성화되었습니다). 양식을 제출하면 숨겨진 필드가 활성화 된 토큰을 보낸 다음 서버가 양식 정보의 유효성을 검증하면 토큰이 활성화되었음을 인식합니다. 토큰이 활성화되지 않으면 양식이 무효화됩니다.

글 머리 기호의 단계 :

  • 고유 식별자를 생성하고 숨겨진 입력으로 양식에 추가하십시오.
  • <input>요소 를 사용하지 않고을 사용 하여 사이트에서 확인란을 렌더링 <div>하고 이전에 생성 된 식별자를 추가합니다 (html5 data-*속성을 사용할 수 있음 )
  • 사용자가 선택란을 클릭하면 서버에 아약스 요청을 보내고 보안 문자가 유효하다면로 표시하십시오 in use. (결과를 보여주십시오-식별자는 OK / OK 아님-사용자에게)
  • 사용자가 양식을 보내면 양식의 데이터에 식별자가 포함됩니다. 다시 한 번 확인하십시오. 존재해야하며in use 상태에 .
  • 모든 유효성 검사가 통과되면 양식의 데이터를 사용 / 처리 할 수 ​​있습니다

식별자를 사용자 세션, IP 주소에 바인딩하거나 시간 제한을 사용하여 보안을 향상시킬 수 있습니다.

노트 이러한 종류의 보안 문자는 JavaScript가 활성화 된 경우에만 작동합니다!

노트 (편집 1) @crazypotato가 언급했듯이 JavaScript를 실행할 수있는 자동화 도구가 있습니다.이 도구는 적절한 AJAX 요청을 보내고 확인란 div에서 Click 이벤트를 발생시킬 수 있습니다.

참고 (편집 2) 특정 사이트에 쓰거나 한 유형의 보안 문자를 깨는 스크립트는 조만간 통과 할 수 있습니다. 궁극적 인 보호는 없으며 봇 (또는 개발자)의 노력만으로 만들 수 있습니다.

참고 (편집 3)이 답변의 단계와 설명에는 이러한 유형의 보안 문자에 대한 기본 정보 만 포함되어 있으므로 보안을 강화하기 위해 항상 유효성 검사 및 보안 단계를 추가해야합니다. 예를 들어 Google noCaptcha는 3 번의 “div 클릭”후에 체계적으로 표준 reCaptcha를 실행합니다.


답변

다음은 PHP에서 문제없이 실행되는 코드입니다.

고객 입장에서:

<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>

서버 측:

if (isset($_POST['g-recaptcha-response'])) {
    $captcha = $_POST['g-recaptcha-response'];
    $privatekey = "SECRET_KEY";
    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = array(
        'secret' => $privatekey,
        'response' => $captcha,
        'remoteip' => $_SERVER['REMOTE_ADDR']
    );

    $curlConfig = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => $data
    );

    $ch = curl_init();
    curl_setopt_array($ch, $curlConfig);
    $response = curl_exec($ch);
    curl_close($ch);
}

$jsonResponse = json_decode($response);

if ($jsonResponse->success == "true")
    doSomething();
else
    doSomeOtherThing();

🙂


답변

나는 수색을 위해 여기에 왔고 답을 보지 못했고 계속 수색을했다.

검색 한 후에도이 창이 여전히 열려 있으므로이 게시물을 찾은 결과로 업데이트하고 있습니다.

reCAPTCHA에 대해 배울 수있는 곳은 다음과 같습니다 .

http://scraping.pro/no-captcha-recaptcha-challenge/

그러나 기본적으로 이것을 웹 페이지에 추가합니다.

<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
    <div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
    <input value="submit" type="submit" />
</form>

reCAPTCHA 키 를 얻으려면 다음 Google 사이트로 이동하십시오.

https://www.google.com/recaptcha/intro/index.html

위의 링크를 사용하여 키를 확보 한 후에는 다음 Google 정보를 사용하여이 코드를 자세히 살펴볼 수 있습니다.

https://developers.google.com/recaptcha/

노트:

Google 설명서에서 :

스크립트는 HTTPS 프로토콜을 사용하여로드해야하며 제한없이 페이지의 어느 지점에서나 포함 할 수 있습니다.

다음은 작동 방식의 예입니다.

<html>
<head>
    <title>Contact</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <script>
    var onloadCallback = function () {
        grecaptcha.render('dvCaptcha', {
            'sitekey': '<%=ReCaptcha_Key %>',
            'callback': function (response) {
                $.ajax({
                    type: "POST",
                    url: "CS.aspx/VerifyCaptcha",
                    data: "{response: '" + response + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (r) {
                        var captchaResponse = jQuery.parseJSON(r.d);
                        if (captchaResponse.success) {
                            $("[id*=txtCaptcha]").val(captchaResponse.success);
                            $("[id*=lblAlarm]").hide();
                        } else {
                            $("[id*=txtCaptcha]").val("");
                            $("[id*=lblAlarm]").show();
                            var error = captchaResponse["error-codes"][0];
                            $("[id*=lblAlarm]").html("RECaptcha error. " + error);
                        }
                    }
                });
            }
        });
    };
    </script>
</head>
<body>
    <form action="?" method="POST">
        <div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
        <br />
        <asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
        <asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
    </form>
</body>
</html>

ASP.NET 코드 숨김에서 유효성을 검사해야하는 경우 “g-recaptcha-response”컨트롤이 채워져 있는지 확인하십시오.

protected static string ReCaptcha_Key, ReCaptcha_Secret;

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
    {
        // other code
    } else
    {
       lblAlarm.Text = "reCAPTCHA failed.";
    }
}

바라건대, 여러분 중 일부는 이것이 유용하다고 생각합니다.


답변

이 글타래에 기여 해주셔서 감사합니다. 새로운 recaptcha 도구에 관심을 가진 많은 사람들을 만나게되어 기쁩니다.

.net 구현을 찾을 수 없으므로 간단한 웹 양식 컨트롤을 작성하여 https://github.com/pnmcosta/recaptchav2dotnet에서 찾을 수 있습니다.


답변