我们进行了渗透测试,其中一项发现是:
“缺少内容安全策略 HTTP 响应标头”
我们做了一些研究,发现了如何在 Web 服务器 httpd.conf 文件中设置它。问题是我们不知道到底要包括什么。我们的网络应用程序实际上不依赖外部站点,如 googleapis 或任何 CDN 或网络上的外部图像。所以,我们真的不确定该放什么。
下面是一个示例,但这依赖于某些谷歌链接。
<Location "/CompanyXYZ/">
Header always append X-Frame-Options deny
Header always set Content-Security-Policy "default-src 'self' data: blob: *.google.com *.gstatic.com; style-src 'self' 'unsafe-inline' *.google.com *.googleapis.com; script-src 'self' 'unsafe-inline' *.googleapis.com *.google.com;"
</Location>
如果我们没有这些依赖怎么办?我们应该如何设置我们的?
这里要澄清的一件事是政策对谷歌链接没有“依赖性”。这是一项允许用户的 Web 浏览器在加载您的应用程序时从这些域加载内容的策略。 CSP 策略是拒绝 用户的浏览器加载任何其他内容的权限。
缺乏 CSP 政策不应被视为漏洞。我希望这被评为“注意”或风险非常低的问题。实施 CSP 是您确实需要测试的事情,因为您可以轻松破坏网站/应用程序的功能。我只是确定您不会为了满足供应商而急于求成。
CSP 是比这更应该做的事情,你需要仔细评估你的应用程序加载/包含的所有内容。 然后 以仅报告模式实施政策是明智的,在这种模式下您可以看到会违反政策的违规行为。这样您就可以找到问题,而不会破坏用户的功能。
这是它自己的蠕虫罐头,因为您需要一个报告侦听器(为此可以在线使用平台)。
如果您不依赖这些域中的资源,您可以安全地忽略它们。它们留在那里作为示例,因为很多站点都包含来自这些 CDN 的内容。
最后一个选择是只包含一个基本什么都不做的非常小的策略。大多数渗透测试供应商只是检查一个框以查看是否存在。
您可以尝试以下操作来选中该框(警告这没有任何作用):
Content-Security-Policy: "default-src *"
缺乏 CSP 政策不应被视为漏洞。我希望这被评为“注意”或风险非常低的问题。实施 CSP 是您确实需要测试的事情,因为您可以轻松破坏网站/应用程序的功能。我只是确定您不会为了满足供应商而急于求成。
正确配置的内容安全策略 (CSP) 可以通过限制 JavaScript、CSS 和其他潜在危险资源的来源来帮助防止跨站点脚本 (XSS) 攻击。 @ebuntu 是什么让您相信这不是漏洞?
<Location "/app-services">
Header set x-xss-protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header set Referrer-Policy "strict-origin"
Header add Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src * 'self' data: https:;"
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=strict
</Location>
<IfModule mod_headers.c>
Header set x-xss-protection "1; mode=block"
</IfModule>
所以在 apcahe 配置中添加了上面的配置,用于将 samesite 设置为 strict,x-xss-protection "1; mode=block",设置安全标志和 Content-Security-Policy