我尝试了网上找到的几种变体,但似乎不起作用。我想屏蔽这些网址,因为它们出现在 magento 安全扫描中。
domain.com/index.php/rss/catalog/notifystock
domain.com/index.php/rss/catalog/review
domain.com/index.php/rss/order/new
domain.com/rss/catalog/notifystock
domain.com/rss/catalog/review
domain.com/rss/order/new
我尝试过的方法是:
location ^~ /rss/order/new {
deny all;
}
location ~ ^/index.php/?rss/ {
deny all;
}
location ~ ^/rss/ {
deny all;
}
location ~* ^/?(index.php?)?rss/(order/new|catalog/notifystock|catalog/review) { return 403; }
有些代码只能屏蔽没有index.php的url
答案1
一次查看一条规则...
location ^~ /rss/order/new { deny all; }
这将阻止您问题中的第 6 个 URI。
使用带有修饰符的前缀位置^~
是明确的,并且比正则表达式更有效。您可以使用以下方法阻止问题中的所有六个 URI:
location ^~ /index.php/rss/catalog/notifystock { deny all; }
location ^~ /index.php/rss/catalog/review { deny all; }
location ^~ /index.php/rss/order/new { deny all; }
location ^~ /rss/catalog/notifystock { deny all; }
location ^~ /rss/catalog/review { deny all; }
location ^~ /rss/order/new { deny all; }
或者对于更通用的规则,所有/rss/
URI,使用:
location ^~ /index.php/rss/ { deny all; }
location ^~ /rss/ { deny all; }
location ~ ^/index.php/?rss/ { deny all; }
这是一个正则表达式位置,需要放置在任何冲突的正则表达式位置块上方(例如:)location ~ \.php
。请参阅这个文件了解详情。
后面?
的/
是不必要的,因为不需要匹配像 这样的 URI /index.phprss
。
如果在您的配置中放置得足够高,它应该会阻止您问题中的前三个 URI。
location ~ ^/rss/ { deny all; }
这也是一个正则表达式位置,需要放在任何冲突的正则表达式位置块之上。
如果在您的配置中放置得足够高,它应该会阻止您问题中的最后三个 URI。
与前面的规则一起,应该会阻止问题中的所有 URI,等等。
location ~* ^/?(index.php?)?rss/(order/new|catalog/notifystock|catalog/review) { return 403; }
这也是一个正则表达式位置,需要放在任何冲突的正则表达式位置块之上。
它不匹配问题中的前三个 URI,因为缺少和/
之间。.php
rss
尝试:
location ~* ^(/index.php)/rss/(order/new|catalog/notifystock|catalog/review) { return 403; }
此规则需要放置在任何有冲突的正则表达式位置块之上,尤其是该location ~ \.php
块。