通过阅读XSS(跨站点脚本)预防速查表,我知道什么是上下文感知的转义。
在我的其他一些项目中,我使用过Zend_Escaper,但我想知道如果htmlspecialchars()
我启用了内容安全策略而不允许unsafe-inline
使用JavaScript(脚本)和CSS(样式),是否足以阻止XSS 。我的看法是,它摆脱了PHP文件本身内的JS和CSS上下文。
假设我不需要输出不受信任的HTML数据,只需输出HTML和HTML属性中的数据。
我真的很想远离像Twig和Smarty这样的模板框架。
否。目前尚不支持所有浏览器使用CSP。许多使用较旧的浏览器。对于使用体面的浏览器的人来说,CSP目前是一个不错的选择,您可以从报告政策中获得警告。但是没有什么可以依靠的。
如果您仅具有启用了CSP的浏览器的用户,那么如果您设置了正确的策略,则CSP应该可以防止XSS带有php中的htmlspecialchars并避免将javascript模板的所有输出转义为所有输出。这意味着必须同时禁止insafe-inline和unsafe-eval。您还应该将主机限制为您知道从中加载资源并信任的主机。仅对您的站点和您从中加载资源的任何其他站点使用https,并使用HTTP Strict Transport Security避免“中间人”攻击。
仅允许访问在iframe中使用该主机的页面上的iframe主机。
还必须使用带有report-uri的报告来查看您的站点是否受到任何潜在攻击,或者对于未启用CSP的浏览器是否会出现问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句