在 Apache Web 服务器中设置内容安全策略

lec*_*ion 6 apache xss penetration-testing content-security-policy

我们进行了渗透测试,其中一项发现是:

“缺少内容安全策略 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>
Run Code Online (Sandbox Code Playgroud)

如果我们没有这些依赖怎么办?我们应该如何设置我们的?

小智 7

这里需要澄清的一件事是政策对谷歌链接没有“依赖”。这是一项允许用户的 Web 浏览器在加载您的应用程序时从这些域加载内容的策略。CSP 策略拒绝用户的浏览器加载其他任何内容的权限。

缺乏 CSP 政策不应被视为漏洞。我希望这被评为“注意”或非常低风险的问题。实施 CSP 是您确实需要测试的事情,因为您可以轻松破坏站点/应用程序上的功能。我只是确定您不会为了满足供应商而急于这样做。

CSP 应该比这更仔细,您需要仔细评估应用程序加载/包含的所有内容。那么在仅报告模式下实施策略是明智的,在这种模式下您可以看到可能违反策略的违规行为。通过这种方式,您可以在不破坏用户功能的情况下发现问题。

这是它自己的蠕虫,因为您需要一个报告侦听器(有可用的在线平台)。

如果您确实选择了它并执行该政策

如果您不依赖来自这些域的资源,则可以安全地省略它们。它们被留在那里作为示例,因为很多站点都包含来自这些 CDN 的内容。

最后一个选择是只包含一个基本上什么都不做的最小策略。大多数渗透测试供应商只是检查一个框以查看是否存在。

您可以尝试以下操作来选中该框(警告这没有任何作用):

Content-Security-Policy: "default-src *"
Run Code Online (Sandbox Code Playgroud)

如果您想要一种简单的方法来使用它,您可以尝试使用 CSP 生成器:https : //www.cspisawesome.com/content_security_policies