CAPTCHA 및 Challenge 작업 동작 - AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced

CAPTCHA 및 Challenge 작업 동작

이 섹션에서는 CAPTCHA 및 Challenge 작업이 수행하는 작업을 설명합니다.

웹 요청이 CAPTCHA 또는 Challenge 작업의 검사 기준과 일치하는 경우 AWS WAF는 토큰 상태 및 면제 시간 구성에 따라 요청을 처리하는 방법을 결정합니다. 또한 AWS WAF는 요청이 CAPTCHA 퍼즐 또는 챌린지 스크립트 중간 광고를 처리할 수 있는지 여부도 고려합니다. 스크립트는 HTML 콘텐츠로 처리되도록 설계되었으며 HTML 콘텐츠를 필요로 하는 클라이언트만 올바르게 처리할 수 있습니다.

참고

규칙 중 하나에서 또는 규칙 그룹 내 규칙 작업 재정의로서 CAPTCHA 또는 Challenge 규칙 작업을 사용하는 경우 추가 요금이 부과됩니다. 자세한 내용은 AWS WAF 요금을 참조하세요.

작업에서 웹 요청을 처리하는 방법

AWS WAF는 CAPTCHA 또는 Challenge 작업을 다음과 같이 웹 요청에 적용합니다.

  • 유효한 토큰 - AWS WAF는 이 작동을 Count 작업과 유사하게 처리합니다. AWS WAF는 규칙 작업에 대해 구성된 모든 레이블과 요청 사용자 지정을 적용한 다음 웹 ACL의 나머지 규칙을 사용하여 해당 요청을 계속 평가합니다.

  • 누락되었거나 유효하지 않거나 만료된 토큰 - AWS WAF는 요청에 대한 웹 ACL 평가를 중단하고 요청이 의도한 대상으로 이동하지 못하도록 차단합니다.

    AWS WAF는 규칙 작업 유형에 따라 클라이언트에 다시 전송하는 응답을 생성합니다.

    • Challenge – AWS WAF에서는 응답에 다음 항목을 포함합니다.

      • challenge 값을 갖는 헤더 x-amzn-waf-action입니다.

        참고

        이 헤더는 클라이언트 브라우저에서 실행되는 JavaScript 애플리케이션에서는 사용할 수 없습니다. 자세한 정보는 다음 섹션을 참조하세요.

      • HTTP 상태 코드 202 Request Accepted.

      • 요청에 값이 text/htmlAccept 헤더가 포함된 경우 응답에는 챌린지 스크립트가 포함된 JavaScript 페이지 전면 광고가 포함됩니다.

    • CAPTCHA – AWS WAF에서는 응답에 다음 항목을 포함합니다.

      • captcha 값을 갖는 헤더 x-amzn-waf-action입니다.

        참고

        이 헤더는 클라이언트 브라우저에서 실행되는 JavaScript 애플리케이션에서는 사용할 수 없습니다. 자세한 정보는 다음 섹션을 참조하세요.

      • HTTP 상태 코드 405 Method Not Allowed.

      • 요청에 값이 text/htmlAccept 헤더가 포함된 경우 응답에는 CAPTCHA 스크립트가 포함된 JavaScript 페이지 전면 광고가 포함됩니다.

웹 ACL 또는 규칙 수준에서 토큰 만료 시기를 구성하려면 AWS WAF에서 타임스탬프 만료 및 토큰 면역 시간 설정 섹션을 참조하세요.

헤더는 클라이언트 브라우저에서 실행되는 JavaScript 애플리케이션에서는 사용할 수 없습니다.

CAPTCHA 또는 챌린지 AWS WAF 응답으로 클라이언트 요청에 응답할 때는 교차 오리진 리소스 공유(CORS) 헤더가 포함되지 않습니다. CORS 헤더는 JavaScript 애플리케이션에서 사용할 수 있는 도메인, HTTP 메서드 및 HTTP 헤더를 클라이언트 웹 브라우저에 알려주는 액세스 제어 헤더 집합입니다. CORS 헤더가 없으면 클라이언트 브라우저에서 실행 중인 JavaScript 애플리케이션에 HTTP 헤더에 대한 액세스 권한이 부여되지 않으므로 CAPTCHA 및 Challenge 응답에 제공된 x-amzn-waf-action 헤더를 읽을 수 없습니다.

챌린지와 CAPTCHA 중간 광고의 기능

챌린지 중간 광고가 실행되면 클라이언트가 성공적으로 응답한 후, 아직 토큰이 없는 경우 중간 광고에서 토큰을 초기화합니다. 그런 다음 챌린지 풀기 타임스탬프로 토큰을 업데이트합니다.

CAPTCHA 중간 광고가 실행될 때 클라이언트에 아직 토큰이 없는 경우 CAPTCHA 전면 광고는 먼저 챌린지 스크립트를 호출하여 브라우저에서 챌린지를 실행하고 토큰을 초기화합니다. 그러면 중간 광고는 CAPTCHA 퍼즐을 실행합니다. 최종 사용자가 퍼즐을 성공적으로 완료하면 중간 광고는 CAPTCHA 풀기 타임스탬프로 토큰을 업데이트합니다.

어느 경우든 클라이언트가 성공적으로 응답하고 스크립트가 토큰을 업데이트하면 스크립트는 업데이트된 토큰을 사용하여 원래 웹 요청을 다시 제출합니다.

AWS WAF에서 토큰을 처리하는 방법을 구성할 수 있습니다. 자세한 내용은 AWS WAF의 웹 요청에 토큰 사용 섹션을 참조하세요.