gpt4 book ai didi

javascript - String.stipTags() 是否足以缓解 XSS 攻击?

转载 作者:行者123 更新时间:2023-11-29 20:26:04 26 4
gpt4 key购买 nike

我正在创建这个 UTF-8 编码的 HTML 页面,用户可以在其中提供输入。我想做这个 XSS 证明。我遇到了这个名为 Prototype 的免费 Javascript 框架,它提供了一些有用的功能。一个特定的函数 stripTags 实质上是从输入字符串中剥离所有标签。以下输入处理是否可以防止 XSS?

  1. 对输入执行彻底的 UTF-8 解码(考虑所有可能的 UTF-8 表示)
  2. 将 HTML 字符实体转换为字符
  3. 对解码、转换后的字符串运行 stripTags 以删除所有可能的标签

对 Javascript 中的 antiXSS 尝试的常见评论之一是用户可以绕过系统。这怎么可能?就我而言,使用该系统的用户是值得信赖的。但是,之前可能使用过同一台机器的其他用户可能是恶意的。

最佳答案

你只需要改变:

  • &&
  • <&lt;
  • "&quot; (如果在属性中使用单引号,还有 '&#39; )

如果您已经对特殊的 HTML 字符进行了转义,那么那里就没有标签,而 strip 标签也不会做任何事情。

如果您使用 strip 标签而不是转义,那么外部输入将能够转义 HTML 属性,例如:

<input value="$foo">

如果$foo是:

" src="404" onerror="evil()

如果您想在 JavaScript 中插入不受信任的内容(在 <script> 内),则适用其他规则:

  • 未在 <script> 中解释的 HTML 实体,所以不要在那里使用它们进行转义。
  • 使用 JavaScript 字符串转义规则(\\\"\")替换所有出现的</<\/ .

关于javascript - String.stipTags() 是否足以缓解 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/904442/

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