gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:22 24 4
gpt4 key购买 nike

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

我已经使用 HttpOnly-cookies 设置为仅在主域上进行身份验证,而用户内容仅显示在无法读取 cookie 的子域上。问题是执行 JavaScript 的可能性仍然太多——例如使用像 onclick 这样的事件属性,Internet Explorer 甚至在 CSS 中有一个属性允许 JavaScript 执行(expression ) 这是我以前从未听说过的。我读到的另一个有趣的想法是抛出异常以阻止后续代码。另一个想法是定义一个列表,其中包含所有允许的标签,另外还有一个包含每个允许的属性名称的数组,但这是一项非常艰巨的工作,我想这不会涵盖所有可能的注入(inject)。

我想我不是唯一遇到这个问题的人,所以有没有人知道覆盖所有可能有害代码的可能性 - 至少在现代浏览器中?

类似于 X-Scripting: disabled 的简单假想 header 将使生活变得更加轻松!

最佳答案

是的,有一个名为 Content Security Policy 的实验性 HTTP header 这允许您控制 JavaScript 的来源,这可以使 XSS 成为不可能。但是目前只有 Chrome 和 Firefox 支持。

启用 HttpOnly-cookies 是个好主意,但这将完全防止 攻击。你仍然可以通过 reading CSRF tokens, and carrying out requests with an XHR 利用 XSS .

获取XSS的方法有很多种,像ShieldSeal这样的漏洞扫描器(向下)将找到(几乎)所有这些。 Skipfish是一个非常原始但免费的开源漏洞扫描器。这就是大多数 Web 应用程序处理广泛传播的漏洞的方式。 (我在 ShieldSeal 工作,我帮助构建了他们的漏洞扫描器,我热爱我的工作。)

当发现问题时,您应该使用 htmlspecialchars($var)htmlspecialchars($var, ENT_QUOTES) 来清理输入。 ENT_QUOTES 可以防止攻击者引入 onclick 或其他 JavaScript 事件。

关于php - 禁用特定页面上的 Javascript 执行 (HTML/PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com