禁用特定页面上的 Javascript 执行 (HTML/PHP)

2023-12-21

是否有任何 HTTP 标头可以禁用特定页面的 Javascript? 我的网站提供用户生成的 HTML 内容(这就是为什么我不能只使用htmlenitities)并且我想阻止脚本编写(JavaScript 注入)。

我已经使用 HttpOnly-cookies 设置仅在主域上进行身份验证,而用户内容仅显示在无法读取 cookie 的子域上。 问题是执行 JavaScript 的可能性仍然太多 - 例如使用事件属性,例如onclickInternet 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(使用前将#替换为@)

禁用特定页面上的 Javascript 执行 (HTML/PHP) 的相关文章

随机推荐