gpt4 book ai didi

security - HTML 编码可以防止各种 XSS 攻击吗?

转载 作者:行者123 更新时间:2023-12-03 05:37:12 24 4
gpt4 key购买 nike

我不担心其他类型的攻击。只是想知道HTML Encode是否可以防止各种XSS攻击。

即使使用 HTML 编码,是否有办法进行 XSS 攻击?

最佳答案

没有。

抛开允许某些标签的主题(这并不是问题的重点),HtmlEncode 根本不涵盖所有 XSS 攻击。

例如,考虑服务器生成的客户端 javascript - 服务器动态地将 htmlencoded 值直接输出到客户端 javascript,htmlencode 将不会阻止注入(inject)脚本的执行。

接下来,考虑以下伪代码:

<input value=<%= HtmlEncode(somevar) %> id=textbox>

现在,如果它不是很明显,例如将 somevar (当然由用户发送)设置为

a onclick=alert(document.cookie)

结果输出是

<input value=a onclick=alert(document.cookie) id=textbox>

这显然是可行的。显然,这可以是(几乎)任何其他脚本...并且 HtmlEncode 不会有太大帮助。

还有一些额外的向量需要考虑...包括第三种类型的 XSS,称为基于 DOM 的 XSS(其中恶意脚本是在客户端动态生成的,例如基于 # 值)。

另外不要忘记 UTF-7 类型的攻击 - 攻击看起来像

+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-

没有什么可编码的...

当然,解决方案(除了适当和限制性的白名单输入验证之外)是执行上下文敏感编码:如果您输出上下文是 HTML,则 HtmlEncoding 非常有用,或者也许您需要 JavaScriptEncoding、VBScriptEncoding、AttributeValueEncoding 或...等。

如果您使用 MS ASP.NET,则可以使用他们的 Anti-XSS 库,它提供了所有必要的上下文编码方法。

请注意,所有编码不应仅限于用户输入,还应包括数据库、文本文件等中的存储值。

哦,不要忘记在 HTTP header 和 META 标记中显式设置字符集,否则您仍然会遇到 UTF-7 漏洞...

更多信息和相当明确的列表(不断更新),请查看 RSnake 的备忘单:http://ha.ckers.org/xss.html

关于security - HTML 编码可以防止各种 XSS 攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728/

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