如何阻止网站URL后附加恶意参数的异常访问?
阻止含特定无意义参数的网站异常访问
服务器层面拦截(最直接高效)
Nginx 配置
在你的Nginx站点配置的server块中添加以下规则,匹配到指定参数直接返回403禁止访问:
# 拦截ved、ea、fwr、region、crui这类无意义参数 if ($args ~* "(ved|ea|fwr|region|crui)=") { return 403; }
配置完成后重启Nginx生效。
Apache 配置
在站点根目录的.htaccess文件(或Apache主配置文件的对应站点块)中添加Rewrite规则:
RewriteEngine On # 匹配指定参数(不区分大小写),直接拦截 RewriteCond %{QUERY_STRING} (ved|ea|fwr|region|crui)= [NC] RewriteRule ^ - [F,L]
[NC]表示不区分参数大小写,[F]返回403状态码,[L]表示停止执行后续规则。
应用层代码拦截(适合需要更灵活逻辑的场景)
如果你的网站是自定义开发的,可以在入口文件里添加参数检查逻辑:
PHP 示例
在站点入口文件(如index.php)最顶部加入:
$blockedParams = ['ved', 'ea', 'fwr', 'region', 'crui']; foreach ($blockedParams as $param) { if (isset($_GET[$param])) { http_response_code(403); exit('Forbidden'); } }
Python Flask 示例
在Flask应用中添加请求前置钩子:
from flask import request, abort @app.before_request def block_invalid_params(): blocked_params = {'ved', 'ea', 'fwr', 'region', 'crui'} # 检查请求参数中是否包含被拦截的字段 if blocked_params & set(request.args.keys()): abort(403)
WAF 拦截(适合多站点或需要更全面防护的场景)
不管是云服务商提供的云WAF,还是开源的ModSecurity这类WAF工具,都可以添加自定义拦截规则:
- 云WAF:在控制台的自定义规则中,设置“URL参数包含指定关键词”的规则,匹配
ved/ea/fwr/region/crui,触发动作选择“拦截”。 - ModSecurity:添加如下规则到配置文件:
SecRule ARGS_NAMES "@rx (ved|ea|fwr|region|crui)" "id:1000,phase:2,deny,status:403,msg:'Blocked invalid parameter'"
注意事项
- 上线前先自行测试:手动在URL后添加这些参数,确认请求被正常拦截且不影响正常访问。
- 如果后续出现新的无意义参数,直接在规则里补充对应的关键词即可。
内容的提问来源于stack exchange,提问作者Ral AMORES GONZLEZ
相关产品推荐
相关产品推荐

