Magento Enterprise 1.14.2 通过 nginx 阻止 rss

Magento Enterprise 1.14.2 通过 nginx 阻止 rss

我尝试了网上找到的几种变体,但似乎不起作用。我想屏蔽这些网址,因为它们出现在 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,因为缺少和/之间。.phprss

尝试:

location ~* ^(/index.php)/rss/(order/new|catalog/notifystock|catalog/review) { return 403; }

此规则需要放置在任何有冲突的正则表达式位置块之上,尤其是该location ~ \.php块。

相关内容