Javascript XSS-innerText字符串可能是HTML元素(脚本、div等)是否有危险?

Javascript XSS-innerText字符串可能是HTML元素(脚本、div等)是否有危险?,javascript,html,xss,Javascript,Html,Xss,我在一个评论网站的客户端工作 用户可以在审阅说明中插入任何文本,包括html元素文本(如:console.log('hello')),并使用基本文本样式设置样式:斜体、粗体等 我想测试跨站点脚本。所以我稍微使用了一下,当使用斜体时,元素被呈现为html元素的内部文本 HTML中的innerText如下所示: 不过,我没有看到警报被执行 用户是否可以编写文本,使其在调用事件时成为有效的HTML? 如果是这样,怎么做?您在元素/DOM选项卡中看到的内容有点误导您。如果您使用(或更恰当地说,通常)设

我在一个评论网站的客户端工作

用户可以在审阅说明中插入任何文本,包括html元素文本(如:
console.log('hello')
),并使用基本文本样式设置样式:斜体、粗体等

我想测试跨站点脚本。所以我稍微使用了一下,当使用斜体时,元素被呈现为html元素的内部文本

HTML中的innerText如下所示:

不过,我没有看到警报被执行

用户是否可以编写文本,使其在调用事件时成为有效的HTML?
如果是这样,怎么做?

您在元素/DOM选项卡中看到的内容有点误导您。如果您使用(或更恰当地说,通常)设置元素的文本,则它中没有标记。它有特点。这些字符可以从显示角度形成标记,但它们不是标记,浏览器也不会这样对待它们

一种方法是查看他们的HTML:

const target=document.getElementById(“目标”);
target.textContent=
`警惕(“嗨!”);
点击我
`;
log(“textContent:,target.textContent”);
log(“innerHTML:,target.innerHTML”)

注意:对于您的img笔测试,它应该是
onload
即使在不安全的设置下也不会在这里触发。嘿,谢谢你的解释。如果你不介意的话,我还有一个后续问题。我在一个div上使用react with dangerlysetinerhtml prop来处理这些元素。如果它不危险,为什么doe会这样贴标签?链接到文档:@ItayTur-这很危险!:-)
危险的SetinerHTML
设置
innerHTML
,而不是
textContent
innerText
。那完全是另一回事。您询问的是
innerText
,而不是
innerHTML
。不要使用
危险的SetinenerHTML
将用户提供的内容添加到页面中(除非您只向提供内容的用户显示内容,而不是向其他用户显示;即使如此,这通常也不是最佳做法)。