是否有任何 HTTP 标头可以禁用特定页面的 Javascript?
我的网站提供用户生成的 HTML 内容(这就是为什么我不能只使用htmlenitities
)并且我想阻止脚本编写(JavaScript 注入)。
我已经使用 HttpOnly-cookies 设置仅在主域上进行身份验证,而用户内容仅显示在无法读取 cookie 的子域上。
问题是执行 JavaScript 的可能性仍然太多 - 例如使用事件属性,例如onclick
Internet Explorer 甚至在 CSS 中具有允许 JavaScript 执行的属性(expression
)这是我以前从未听说过的。我读到的另一个有趣的想法是抛出异常以阻止后面的代码。
另一个想法是定义一个包含所有允许的标签的列表,并另外定义一个包含每个允许的属性名称的数组,但这是一项非常艰巨的工作,我想这不会涵盖所有可能的注入。
我想我不是唯一遇到这个问题的人,所以有人知道可能性吗?all可能的有害代码 - 至少在现代浏览器中?
一个简单的虚构标题类似于X-Scripting: disabled
会让生活变得更加轻松!
是的,有一个实验性的 HTTP 标头,称为内容安全政策 https://developer.mozilla.org/en/Introducing_Content_Security_Policy它允许您控制 JavaScript 的来源,从而使 XSS 成为不可能。但目前仅 Chrome 和 Firefox 支持。
启用 HttpOnly-cookies 是个好主意,但这会完全阻止ZERO攻击。您仍然可以通过以下方式利用 XSS读取 CSRF 令牌,并使用 XHR 执行请求 http://namb.la/popular/tech.html.
There are many ways of obtaining XSS, and a Vulnerability Scanner like ShieldSeal https://shieldseal.com/ (down) will find (nearly) all of them. Skipfish http://code.google.com/p/skipfish/ is an open source vulnerability scanner that is very primitive, but its free. This is how most web applications deal with wide spread vulnerabilities. (I work for ShieldSeal and I help build their vulnerability scanner and I love my job.)
当发现问题时,您应该使用htmlspecialchars($var)
or htmlspecialchars($var, ENT_QUOTES)
净化输入。ENT_QUOTES
可以防止攻击者引入onclick
或其他 JavaScript 事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)