gpt4 book ai didi

java - 当脚本显示在 HTML 文本区域中时,是否可能发生 XSS 攻击?

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:19 24 4
gpt4 key购买 nike

我的 UI 中有一个 HTML 文本区域(用于基于 Java 的 Web 应用程序),用户可以在其中输入任何值。保存后,它会显示在浏览器的文本区域(已禁用)中。

如果用户在 textarea 中输入任何脚本作为自由文本,它是否会作为脚本执行(即使该值显示在 textarea 中,而不是标签/文本)?

最佳答案

这取决于您如何设置 textarea 的值。在HTML代码中,textarea的内容就是元素内部的文本。

我创建了一个 JSFiddle to demonstrate更改 textarea

内容的各种方法
<div><textarea id="e1"></textarea></div>
<div><textarea id="e2"></textarea></div>
<div id="e3"/>

var dangerous = '<scri' + 'pt>alert("Danger!");</scri' + 'pt>';
document.getElementById('e1').value = dangerous;

document.getElementById('e2').innerHTML = dangerous;

dangerous = '</textarea>' + dangerous;
var content = '<textarea>' + dangerous + '</textarea>';
document.getElementById('e3').innerHTML = content;

console.log('Done.');

这将创建两个 textarea 元素,其中包含一个脚本(保存)和一个空脚本。

在上次测试中,我关闭了输入中的textarea,然后附加了脚本。有趣的是,在这种情况下设置 innerHTML 是安全的:It doesn't execute scripts inserted in this way .

因此,只要您使用 JavaScript 执行此操作,就非常安全。但通常情况下,您在服务器上呈现页面的 DOM,然后您必须确保正确转义 textarea 的内容,因为:

String unfilteredInput = "</textarea><script>alert(\"Danger!\");</script>";

out.write("<textarea>");
out.write(content);
out.write("</textarea>");

将执行脚本。

注意:我还尝试演示 document.write() 但在 JSFiddle 中不允许这样做。我很确定 document.write() 容易受到同样的攻击。<​​/p>

关于java - 当脚本显示在 HTML 文本区域中时,是否可能发生 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19674768/

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