如何修复网站缺失的Referrer-Policy安全头

本文详细介绍了Referrer-Policy安全头的作用、检查方法和配置步骤,指导如何在Apache服务器中设置no-referrer-when-downgrade策略,防止URL信息泄露,提升网站安全性。

如何修复网站缺失的Referrer-Policy

Kent Ickler

Referrer-Policy是什么?

Referrer-Policy是一个安全头,可以(且应该)包含在从网站服务器到客户端的通信中。该策略告诉Web浏览器如何处理当用户点击指向其他页面或网站的链接时发送给网站的来源信息。

Referrer-Policy可配置为让浏览器不向目标站点发送任何URL信息、部分信息或完整URL路径。设置策略是良好的安全实践。策略可以通过多种方式设置,包括在网站代码中(PHP等)。下面我们将在Apache配置中配置Referrer-Policy头。

检查是否启用了Referrer-Policy

如果您之前没有听说过这些头信息,很可能没有启用它们。它们不是自动启用的,尽管可能已包含在您安装的Web应用程序中(WordPress、Joomla等)。快速检查的方法是访问www.securityheaders.io并扫描您的网站。您也可以在FireFox的开发者控制台中检查。

确定您的Referrer需求

当用户通过指向其他地方的链接离开您的网站时,让目标服务器知道用户来自哪里(您的网站)可能很有用。也可能更合适不告诉他们任何关于您网站的信息。发送的referrer头通常是一个字符串,包含用户点击指向目标的链接的页面URL。有多种方式可以配置是否发送以及发送什么信息,但需要注意referrer可能对于正确配置网络广告、分析工具和一些认证平台是必要的。您还可以确保HTTPS URL不会泄漏到HTTP头中(从而在互联网上未加密地泄漏网站路径信息)。

在我们的案例中,我们发现"no-referrer-when-downgrade"策略符合我们的需求。这将确保如果用户点击指向HTTP网站(不安全)的链接,Web浏览器不会发布我们的HTTPS URL路径(这将是一个安全数据泄漏,因为它未加密地在互联网上披露我们的URL路径方案)。

具体的策略选项可以在本文底部的链接中找到。

在Apache中创建和配置Referrer-Policy

我们需要添加的头将在httpd.conf文件中添加(或者apache.conf等)。

在httpd.conf中,找到您的VirtualHost部分。

接下来,找到您的<IfModule headers_module>部分。如果不存在,您需要创建它并添加我们的特定头。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<VirtualServer>

~这里有一些重要的内容~

    <IfModule headers_module>
    RequestHeader set X-HTTPS 1
          Header set Referrer-Policy "no-referrer-when-downgrade"
       </IfModule>

~更多重要内容~

</VirtualServer>

重启Apache

1
sudo service apache restart

测试更改

设置Content-Security-Policy头

Scott Helme进行了大量研究,并帮助为Web开发人员完全实现Referrer-Policy铺平了道路。以下是Scott整理的一些优秀内容,以帮助正确实施。

新的安全头:Referrer Policy - 链接:https://scotthelme.co.uk/a-new-security-header-referrer-policy/

SecurityHeaders.io - 链接:https://www.securityheaders.io

相关: 参见第1部分:如何配置Content-Security-Policy

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计