XSS和内容安全策略

时间:2014-10-13 08:59:32

标签: php xss htmlspecialchars content-security-policy

从阅读XSS (Cross Site Scripting) Prevention Cheat Sheet开始,我知道了什么是上下文感知的转义。

在我的其他一些项目中,我使用过Zend_Escaper,但我想知道如果我启用了内容安全策略而不允许使用htmlspecialchars()来阻止XSS是否足够unsafe-inline用于JavaScript(脚本)和CSS(样式)。我看到它的方式,这摆脱了PHP文件本身的JS和CSS上下文。

假设我不需要输出不受信任的HTML数据,只需输出HTML 中的数据和HTML属性中的

我真的想远离像Twig和Smarty这样的模板框架。

1 个答案:

答案 0 :(得分:1)

没有。所有浏览器都不支持CSP。许多人使用旧浏览器。对于使用体面浏览器的人来说,CSP目前是一个很好的奖励,你可以从报告政策中获得警告。但不是你可以依赖的东西。

如果您的用户只使用支持CSP的浏览器,那么如果您设置了正确的策略,则CSP应该可以安全地使用php中的htmlspecialchars进行XSS,并且可以转义所有输出的javascript模板输出。这意味着不允许使用unsafe-inline和unsafe-eval。您还应该将主机限制为您知道从中加载资源并且您信任的主机。仅对您的网站和从中加载资源的任何其他网站使用https,并使用HTTP Strict Transport Security来避免Man In The Middle攻击。

仅允许在iframe中使用该主机的网页上访问iframe主机。

带有report-uri的报告也是必须查看您的网站是否存在任何潜在攻击,或者是否会针对非CSP启用的浏览器出现问题。

更多信息herehere