Nginx SQL 주입 방지 규칙

4955 단어
$request_uriThis variable is equal to the original request URI as received from the client including the args. It cannot be modified. Look at $uri for the post - rewrite / altered URI. Does not include host name. 예제: "/ foo / bar. php? arg = baz" 이 변 수 는 클 라 이언 트 에서 보 낸 원생 요청 URI 와 같 습 니 다. 매개 변 수 를 포함 합 니 다.수정 할 수 없습니다. $uri 변 수 는 재 작성 후 / 변 경 된 URI 를 반영 합 니 다.호스트 이름 은 포함 되 지 않 습 니 다.예 를 들 어: "/ foo / bar. php? arg = baz" $uri이 변 수 는 인 수 없 이 현재 요청 URI 입 니 다 ($args for those 참조). 이 변 수 는 내부 리 다 이 렉 션 이나 인덱스 모듈 에 의 해 지금까지 수 정 된 모든 수정 사항 을 반영 합 니 다. $request 와 다 를 수 있 습 니 다.uri, as $request_uri is what was originally sent by the browser before any such modifications. Does not include the protocol or host name. 예제: / foo / bar. html 이 변 수 는 현재 요청 URI 를 가리 키 며 어떠한 인자 도 포함 하지 않 습 니 다 ($args 참조).이 변 수 는 내부 재 설정 이나 index 모듈 의 수정 을 반영 합 니 다.주의, 이것 과 $requesturi 가 다 르 기 때문에 $requesturi 는 브 라 우 저가 수정 하지 않 고 시작 한 네 이 티 브 URI 입 니 다.프로 토 콜 및 호스트 이름 은 포함 되 지 않 습 니 다.예 를 들 어 장 소 삼 자원: "/ foo / bar. html"
$document_uriThe same as $uri. 같은 $uri.
다음은 수집 한 간단 한 규칙 입 니 다.
if ($query_string ~* ".*('|--|union|insert|drop|truncate|update|from|grant|exec|where|select|and|or|count|chr|mid|like|iframe|script|alert|webscan|dbappsecurity|style|confirm|innerhtml|innertext|class).*")
{ return 500; }
if ($uri ~* .*(viewsource.jsp)$) { return 404; }
if ($uri ~* .*(/~).*) { return 404; }

빈 바이트 자원 망 분석 구멍 수리:
if ($query_string ~* ".*[;'<>].*") { return 444; }
if ($request_uri ~ " ") { return 444; }

허용 되 지 않 은 IP 접근 디 렉 터 리 에서 PHP 를 실행 하 는 것 을 금지 합 니 다.pathinfo 가 열 리 지 않 은 상태 에서 자원 은 location ~ [^ /]. php (/ | $) 앞 에 다음 과 같이 추가 합 니 다.
location ~ /(xxx)/.*\.(php|php5)?$
{ allow    IP; deny all; }

pathinfo 를 여 는 경우: location ~ [^ /]. php (/ | $) 앞 에 다음 과 같이 추가 합 니 다 location ^~ /xxx/ { #default_type text/plain; #expires 30d; allow IP; deny all; }내부: if ($uri ~* (.*)(insert|select|delete|update|count|master|truncate|declare|exec|\*|%|\')(.*)$ ) { return 403; } 외부:
if ($request_uri ~* "(cost\()|(concat\()") { return 403; }
if ($request_uri ~* "[+|(%20)]union[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]and[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]select[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]or[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]delete[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]update[+|(%20)]") { return 403; }
if ($request_uri ~* "[+|(%20)]insert[+|(%20)]") { return 403; }

넘 침 필터:
if ($query_string ~ "(|%3E)") { return 403; }
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") { return 403; }
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") { return 403; }
if ($query_string ~ "proc/self/environ") { return 403; }
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") { return 403; }
if ($query_string ~ "base64_(en|de)code\(.*\)") { return 403; }

파일 주입 금지:
if ($query_string ~ "[a-zA-Z0-9_]=http://") { return 403; }
if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") { return 403; }
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") { return 403; }

일부 머리의 참고:
if ($http_user_agent ~ ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl) { return 444; }
if ($http_user_agent ~ "Go-Ahead-Got-It") { return 444; }
if ($http_user_agent ~ "GetWeb!") { return 444; }
if ($http_user_agent ~ "Go!Zilla") { return 444; }
if ($http_user_agent ~ "Download Demon") { return 444; }
if ($http_user_agent ~ "Indy Library") { return 444; }
if ($http_user_agent ~ "libwww-perl") { return 444; }
if ($http_user_agent ~ "Nmap Scripting Engine") { return 444; }
if ($http_user_agent ~ "Load Impact") { return 444; }
if ($http_user_agent ~ "~17ce.com") { return 444; }
if ($http_user_agent ~ "WebBench*") { return 444; }
if ($http_referer ~* 17ce.com) { return 444; }
if ($http_user_agent ~* qiyunce) { return 444; }
if ($http_user_agent ~* YunGuanCe) { return 403; }
if ($http_referer ~* WebBench*") { return 444; }
if ($http_user_agent ~ "BLEXBot") { return 403; }
if ($http_user_agent ~ "MJ12bot") { return 403; }
if ($http_user_agent ~ "semalt.com") { return 403; }

차단 웹 ip:
iptables -I INPUT -s 100.220.213.3 -j DROP
if ($remote_addr ~* "100.220.213.3|ip2|ip3....") { return 404; }

따옴표 가 붙 거나 붙 이지 않 는 효 과 는 같 지만 이름 에 빈 칸 이 있 으 면 따옴표 가 붙 어야 합 니 다 ~ * 대소 문자 구분 없 음 ~ 대소 문자 구분 없 음
다음으로 전송:https://blog.51cto.com/1439337369/2333981

좋은 웹페이지 즐겨찾기