CAPTCHA를 사용하여 봇이 ASP.NET Web Razor) 사이트를 사용하지 못하도록 방지

작성자: Microsoft

이 문서에서는 ReCaptcha(보안 조치)를 사용하여 자동화된 프로그램(봇)이 ASP.NET 웹 페이지(Razor) 웹 사이트에서 작업을 수행하지 못하도록 하는 방법을 설명합니다.

학습할 내용:

  • 사이트에 CAPTCHA 테스트를 추가하는 방법입니다.

다음은 문서에 도입된 ASP.NET 기능입니다.

  • 도우미입니다 ReCaptcha .

참고

이 문서의 정보는 ASP.NET 웹 페이지 1.0 및 웹 페이지 2에 적용됩니다.

CAPTCHA 정보

사용자가 사이트에 등록하도록 허용하거나 이름 및 URL(예: 블로그 댓글)을 입력하면 가짜 이름의 홍수가 발생할 수 있습니다. 이러한 URL은 찾을 수 있는 모든 웹 사이트에 URL을 남기려는 자동화된 프로그램(봇)에 의해 남아 있는 경우가 많습니다. (일반적인 동기는 판매할 제품의 URL을 게시하는 것입니다.)

CAPTCHA를 사용하여 사용자가 등록하거나 이름과 사이트를 입력할 때 사용자의 유효성을 검사하여 사용자가 컴퓨터 프로그램이 아닌 실제 사용자인지 확인할 수 있습니다. CAPTCHA는 컴퓨터와 인간을 구분하기 위한 완전 자동화 퍼블릭 튜링 테스트를 의미합니다. CAPTCHA는 사용자가 쉽게 할 수 있지만 자동화된 프로그램에서는 어려운 작업을 수행하도록 요청하는 챌린지 응답 테스트입니다. CAPTCHA의 가장 일반적인 유형은 일부 왜곡된 문자를 보고 입력하라는 메시지가 표시되는 형식입니다. (왜곡은 봇이 문자를 해독하기 어렵게 만들어야 합니다.)

ReCaptcha 테스트 추가

ASP.NET 페이지에서 도우미를 ReCaptcha 사용하여 ReCaptcha 서비스를 기반으로 하는 CAPTCHA 테스트를 렌더링할 수 있습니다. ReCaptcha 도우미는 페이지의 유효성을 검사하기 전에 사용자가 올바르게 입력해야 하는 왜곡된 두 단어의 이미지를 표시합니다. 사용자 응답은 ReCaptcha.Net 서비스에서 유효성을 검사합니다.

두 개의 왜곡된 단어와 사용자 확인을 위한 텍스트 필드를 보여 주는 ReCaptcha 서비스에서 생성된 Captcha 테스트의 스크린샷.

  1. ReCaptcha 서비스에 웹 사이트를 등록합니다. 등록을 완료하면 공개 키와 프라이빗 키가 표시됩니다.

  2. 아직 ASP.NET 웹 페이지 사이트에 도우미 설치에 설명된 대로 웹 사이트에 ASP.NET 웹 도우미 라이브러리를 추가합니다.

  3. 아직 _AppStart.cshtml 파일이 없는 경우 웹 사이트의 루트 폴더에서 _AppStart.cshtml이라는 파일을 만듭니다.

  4. _AppStart.cshtml 파일에 다음 Recaptcha 도우미 설정을 추가합니다.

    @using Microsoft.Web.Helpers;
    @{
      // Add the PublicKey and PrivateKey strings with your public
      // and private keys. Obtain your PublicKey and PrivateKey
      // at the ReCaptcha.Net (http://recaptcha.net) website.
      ReCaptcha.PublicKey = "your-public-key";
      ReCaptcha.PrivateKey = "your-private-key";
    }
    
  5. 사용자 고유의 PublicKey 퍼블릭 및 프라이빗 키를 사용하여 및 PrivateKey 속성을 설정합니다.

  6. _AppStart.cshtml 파일을 저장하고 닫습니다.

  7. 웹 사이트의 루트 폴더에서 Recaptcha.cshtml이라는 새 페이지를 만듭니다.

  8. 기존 콘텐츠를 다음으로 바꿉다.

    @using Microsoft.Web.Helpers;
    @{
      var showRecaptcha = true;
      if (IsPost) {
        if (ReCaptcha.Validate()) {
            @:Your response passed!
            showRecaptcha = false;
        }
        else{
          @:Your response didn't pass!
        }
      }
    }
    <!DOCTYPE html>
    <html>
        <head>
            <title>Testing Global Recaptcha Keys</title>
        </head>
        <body>
        <form action="" method="post">
        @if(showRecaptcha == true){
            if(ReCaptcha.PrivateKey != ""){
                <p>@ReCaptcha.GetHtml()</p>
                <input type="submit" value="Submit" />
            }
            else {
                <p>You can get your public and private keys at
                the ReCaptcha.Net website (http://recaptcha.net).
                Then add the keys to the _AppStart.cshtml file.</p>
            }
        }
        </form>
        </body>
    </html>
    
  9. 브라우저에서 Recaptcha.cshtml 페이지를 실행합니다. 값이 PrivateKey 유효한 경우 페이지에 ReCaptcha 컨트롤과 단추가 표시됩니다. _AppStart.html키를 전역으로 설정하지 않은 경우 페이지에 오류가 표시됩니다.

    생성된 captcha 및 제출 단추를 보여 주는 Recaptcha dot c s h t m l 브라우저 페이지의 스크린샷.

  10. 테스트의 단어를 입력합니다. ReCaptcha 테스트를 통과하면 해당 효과에 대한 메시지가 표시됩니다. 그렇지 않으면 오류 메시지가 표시되고 ReCaptcha 컨트롤이 다시 표시됩니다.

참고

컴퓨터가 프록시 서버를 사용하는 도메인에 있는 경우 Web.config 파일의 요소를 구성 defaultproxy 해야 할 수 있습니다. 다음 예제에서는 ReCaptcha 서비스가 작동하도록 구성된 요소가 있는 Web.config 파일을 defaultproxy 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.net>
      <defaultProxy>
         <proxy
            usesystemdefault = "false"
            proxyaddress="http://myProxy.MyDomain.com"
            bypassonlocal="true"
            autoDetect="False"
         />
      </defaultProxy>
   </system.net>
</configuration>

추가 리소스