我正在调查我们系统中的一个错误,其中链接的标题属性被设置为类似于
这个额外的转义步骤似乎导致HTML特殊字符过度转义,因此它们的转义值被文字渲染出来。
为了更加彻底,我检查了HTML规范,根据这行说明,
据我理解,这句话意味着setAttribute函数应该转义HTML特殊字符。这个解释正确吗?
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特殊字符。这个解释正确吗?