【发布时间】:2013-07-19 10:46:04
【问题描述】:
我正在使用 Symfony2 / Twig / Doctrine。
我正在研究我网站的安全性,特别是防止 XSS 攻击,但我看不出我还能做些什么。
-
持久性
我使用 Doctrine 并始终确保我确保用户输入安全,拒绝 HTML、网址和电子邮件地址等(如果适用,例如评论框)。我也使用 Twig(我相信它会逃避输出)。
-
反光
我的理解是,任何人都可以向某人发送一封电子邮件,其中包含指向任何也注入 JavaScript 的网站的链接。那JS当然可以做任何事情。那个 JS 可以有一个登录表单提交到任何网址,你无能为力(除了希望愚蠢的人不要点击随机人的链接到我网站的登录页面)。
所以除非你能阻止JS被注入,那我还能做什么呢?
我不相信您可以阻止站点在另一台服务器上运行 JS 脚本(我的有效 JS 无论如何来自另一台服务器上的 CDN)并且我认为您不能阻止提交 HTML 表单到另一台服务器。
我确实相信跨域保护确实可以防止注入的 JS 调用 Ajax 请求 - 但我没有对此做任何事情,我只是认为这就是现代浏览器的工作方式。
我手里还有别的东西吗?只要我做了一切可能的事情,对我来说就足够了。
我想我想知道为什么当有些人靠提供 XSS 保护建议谋生时,我对此无能为力。也许是因为我使用 Symfony2 / Twig / Doctrine?
只是寻求帮助以澄清我的理解。
【问题讨论】:
-
xss 缺陷通常是出于疏忽。你可以做的很好,但是你没想到的一个 ajax 动作中的一个小小的缺陷可能会失败!这就是为什么人们需要付费阅读代码并分析任何缺陷。你不能总是发现你自己的代码有什么问题
-
不要拒绝 HTML,只要确保在输出之前对所有内容进行编码即可。
-
谢谢。那我还有什么办法吗?我可以信任 Symfony2 / Twig / Doctrine,对吗?
-
您检查过HTML Purifier 了吗? Stack Overflow 上多次提到它,这也是我个人考虑使用它的原因。您基本上可以允许/禁止使用所需的 html 标签。
标签: php javascript symfony xss