Apache 限制查询字符串中的参数数量

Apache 限制查询字符串中的参数数量,apache,.htaccess,nginx,mod-rewrite,Apache,.htaccess,Nginx,Mod Rewrite,我只想限制nginx/apache允许传递的参数数量。例如:如果有人试图访问一个链接,比如test.php?arg1=value&arg2=value&arg3=value给他们一个404错误或403错误,这并不重要。如果URL包含两个以上的参数,则Web服务器应阻止该URL。有没有办法完成这项任务?我尝试过Apache htaccess,但没有成功。我说的是限制整个网站的参数数量,而不仅仅是一个页面/文件 RewriteCond %{QUERY_STRING} (([a-z]+){3,})=(

我只想限制nginx/apache允许传递的参数数量。例如:如果有人试图访问一个链接,比如
test.php?arg1=value&arg2=value&arg3=value
给他们一个404错误或403错误,这并不重要。如果URL包含两个以上的参数,则Web服务器应阻止该URL。有没有办法完成这项任务?我尝试过Apache htaccess,但没有成功。我说的是限制整个网站的参数数量,而不仅仅是一个页面/文件

RewriteCond %{QUERY_STRING} (([a-z]+){3,})=(.*) [NC]
RewriteRule (.*) /404.php? [R=404,L]

对于Apache和Nginx可以这样做吗?

一种简单的方法是限制
$args
字符串中
&
字符的数量

如果只有两个参数,通常只有一个
&
连接它们,因此序列
&.*&
不应该存在

例如:

if ($args ~ "&.*&") { return 403; }

请参阅关于
if

的使用一种简单的方法是限制
$args
字符串中
&
字符的数量

如果只有两个参数,通常只有一个
&
连接它们,因此序列
&.*&
不应该存在

例如:

if ($args ~ "&.*&") { return 403; }

请参见使用
if

的好方法。我用同样的方法为htaccess做了一些事情。谢谢你,伙计!说得不错。我用同样的方法为htaccess做了一些事情。谢谢你,伙计!