gpt4 book ai didi

javascript - setAttribute 会自动转义 HTML 字符吗?

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

我正在调查我们系统中的一个错误,其中链接的标题属性被设置为类似于 click if value > 400 的内容但实际显示的工具提示是 click if value > 400 。该标题值是由用户输入定义的,因此原始工程师对文本进行了转义,这样就不会导致 XSS 漏洞。 click if value > 400变成click if value > 400 .

这个额外的转义步骤似乎会导致 HTML 特殊字符转义过多,因此它们的转义值会按字面呈现。

为了更加彻底,我检查了 HTML 规范,根据这一行,setAttribute 似乎是这样的。函数必须自动转义属性的值字符串。

https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082

“如果元素中已存在具有该名称的属性,则其值将更改为 value 参数的值。该值是一个简单的字符串;在设置时不会对其进行解析。因此任何标记(例如被识别为实体引用的语法)都被视为文字文本,并且在写出时需要由实现进行适当的转义。”

据我了解,这一行的意思是setAttribute函数应该转义 HTML 特殊字符。这是正确的解释吗?

最佳答案

该引用的简单英语解释是 setAttribute() 不会将该值解析为 HTML。原因是您根本没有编写 HTML;而是在编写 HTML。该值是纯文本格式,而不是 HTML 格式,因此 HTML 中通常属于特殊字符的内容在纯文本中没有特殊含义,将它们当作 HTML 进行转义实际上会造成破坏。

>> 的 HTML 表示形式。您只需将其编码为 HTML,而不是纯文本。

关于javascript - setAttribute 会自动转义 HTML 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140983/

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