我们如何才能知道我们的服务器是否完全给出了 403 禁止错误?我想知道,因为我使用了 .htaccess 文件的代码,该文件用于阻止引荐来源网站和垃圾邮件机器人。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} domain2\.com [NC,OR]
RewriteCond %{HTTP_REFERER} domain3\.com [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
我使用该代码屏蔽了一个网站,但当我访问该网站并点击我的网站链接时,我的网站可以正常打开。由于引荐来源网站列在 .htaccess 文件中,我不应该收到 403 禁止页面吗?
如何检查我的网站是否支持 403 禁止页面?代码是否正确?
答案1
伪造请求的方法有很多种。您可以使用 Postman (https://www.getpostman.com/postman) 例如,或者使用 curl 或 request 之类的库。
对于您来说,您只需更改标题中的 Referer 字段。
答案2
但当我访问该网站并点击我的网站链接时,我的网站可以正常打开。由于引荐来源网站已列在
.htaccess
文件中,我不应该收到 403 禁止页面吗?
对于正常链接,在正常情况下,是的。您可能希望阻止请求。但是,使用Referer
(HTTP 请求标头)进行阻止是不可靠。
- 可以将用户的浏览器配置为不发送
Referer
标头。 - 源站点上的锚点/链接可以构造为不发送 HTTP
Referer
。 实际上,使用 HTML5,您只需要rel="noreferrer"
在锚点上设置 (两个 r) 属性即可阻止浏览器发送Referer
标头(Referrer Policy 的一部分)。 - 这引荐人政策(Chrome 和 Firefox 支持)允许网站阻止
Referer
来自某个网站的所有链接上的所有标头。
(请注意,有时是“Referer”(1 r),有时是“Referrer”(2 r)。)
参考:
https://stackoverflow.com/questions/5033300/stop-link-from-sending-referrer-to-destination