Github提示‘Dom text reinterpeted as HTML’漏洞,如何正确修复?
修复XSS漏洞的正确方式
你的问题根源在于直接拼接HTML字符串插入DOM,这种做法会让文本中的HTML特殊字符(比如<、>、&)被浏览器解析为HTML,从而引发XSS风险,这也是Github警报的原因。你尝试用$.find()的方向完全错误,这个方法是用来查找DOM元素的,根本不适合处理文本转义。
正确修复代码
直接用jQuery创建span元素并设置文本内容,jQuery会自动转义所有危险字符,彻底避免XSS:
$div.find('.myclass').each(function () { // 创建span元素,用text()方法设置内容(自动转义特殊字符) const $span = $('<span>').text($(this).text()); // 将span追加到.list元素中 $('.list').append($span); });
关键修正点说明
- 选择器修正:原代码里的
$div.find('myclass')应该是$div.find('.myclass')——class选择器必须加.,否则会查找<myclass>标签,这大概率是你之前的笔误。 - 避免HTML拼接:不再用
'<span>' + 文本 + '</span>'这种拼接方式,而是通过$('<span>')创建元素,再用.text()注入内容。.text()会自动把所有特殊字符转义成实体(比如<变成<),确保文本只会被当作纯文本渲染,不会被解析为HTML。 - 选择器简化:原代码里的
$("\.list")完全没必要转义.,直接写$('.list')即可。
另一种等价简洁写法
如果不想单独创建变量,也可以直接链式调用:
$div.find('.myclass').each(function () { $('.list').append($('<span>').text($(this).text())); });
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

