Nginx は、高性能 Web サーバーおよびリバース プロキシ サーバーとして、Web サイト設計者に広く支持されています。ただし、Nginx を使用する場合、特に URL を処理する場合には、セキュリティの問題にも注意する必要があります。
Nginx の柔軟性により、URL セキュリティ戦略を採用しないと、次の攻撃を受ける可能性があります:
正規表現
if ($http_user_agent ~* "some evil expression") { return 403; }
# block ip sends more than 100 requests per 5 seconds limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; server { location / { limit_conn one 10; limit_req zone=two burst=5 nodelay; } }
まず、ステータス情報を保存できるメモリ領域である 2 つのゾーンを定義します。 (これは、アクセスが多い場合、この保護のコストが比較的高くなる可能性があることも意味します)
location ~* (.php|.asp|.ashx)/?$ { if ($args ~* "select.*from") { return 403; } }
if ($args ~* "<script.*>") { return 403; }
location / { if ($http_referer !~ "^https?://$host/") { return 403; } }
location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } }
location ~ /(admin|login).php { deny all; }
server { listen 80; server_name yourdomain.com; # 设置过滤规则 location / { # 禁止非法请求 limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s; limit_conn one 10; limit_req zone=two burst=5 nodelay; # 防止XSS攻击 if ($args ~* "<script.*>") { return 403; } # 防止SQL注入 if ($args ~* "select.*from") { return 403; } # 禁止admin和login的访问 location ~ /(admin|login).php { deny all; } } # 防止文件下载漏洞 location ~* .(xls|doc|pdf)$ { valid_referers none blocked server_names; if ($invalid_referer) { return 401; } } }
以上がNginx URL セキュリティ ポリシー作成ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。