이 코드는 실제로 무엇을 하는가?

이 코드는 실제로 무엇을 하는가?

WordPress용 iThemes 보안 플러그인을 테스트하고 있습니다. 다음 코드를 추가합니다.

        # Rules to help reduce spam
        location /wp-comments-post.php {
            valid_referers jetpack.wordpress.com/jetpack-comment/ *.mysite.com;
            set $rule_0 0;
            if ($request_method ~ "POST"){ set $rule_0 1$rule_0; }
            if ($invalid_referer) { set $rule_0 2$rule_0; }
            if ($http_user_agent ~ "^$"){ set $rule_0 3$rule_0; }
            if ($rule_0 = "3210") { return 403; }
        }

저자는 이를 "이 옵션은 리퍼러나 인식할 수 없는 사용자 에이전트가 없는 봇의 댓글을 거부하여 댓글 스팸을 줄입니다."라고 설명합니다.

제 생각에는 모든 조건이 충족되어야 한다고 생각합니다.

이 코드는 실제로 무엇을 하는가? 무슨 뜻이에요 $rule_0 = "3210"?

답변1

노트:분명히 그렇지 않습니다. 아래 설명에서 언급한 것처럼 php이는 단지 구성 파일일 뿐입니다.nginx

잘 모르겠지만 php간단한 것 같습니다. 나는 이것이 다음과 같이 작동한다고 생각합니다.

valid_referers jetpack.wordpress.com/jetpack-comment/ *.mysite.com;
        set $rule_0 0;

이것은 단지 기본 ok 값을 설정합니다. 여기서는 $rule0_0값을 로 정의합니다 0.

 if ($request_method ~ "POST"){ set $rule_0 1$rule_0; }

http 요청 BITWISE NOT단어가 같음으로 POST,설정된 경우 .$rule_010

$rule_0 ifreferrer이 패턴이 계속되어 유효하지 않거나 유효하지 않은 값이 있으면 2와 3을 추가합니다.user_agent.

if ($rule_0 = "3210") { return 403; }

여기서 if유효하지 않은 조합 $request_method, $http_user_agentreferrer다음은 $rule_0동일하며 3210PHP 서버는 다음을 반환합니다.403: FORBIDDEN.

관련 정보