gpt4 book ai didi

javascript - XSS 攻击在 textarea 标签中不起作用

转载 作者:行者123 更新时间:2023-11-30 10:18:52 36 4
gpt4 key购买 nike

我之前使用 PHP 和 AJAX 编写了一个简单的聊天应用程序。这样,一旦用户发送聊天消息,它首先会转到 php,然后从那里保存在数据库中。我在客户端使用 AJAX 定期查询数据库以获取新消息。我最终在 .

所以在我的客户端代码中,我有一个 recMsg 变量,我已将其设置为

recMsg = recMsg + value['chattime'] + ' <@' + value['chatby'] + '> ' + value['chat'] + '\r\n';

其中 value 是一个数组,其中 value['chat'] 具有实际的聊天消息。

后面我设置文本区域如下

$('#received').val(recMsg + $('#received').val());

received 是标签的 ID。 textarea 的代码(当我在浏览器中查看源代码时)是

<textarea id="received" rows="15" cols="150"></textarea>

现在要尝试 xss 攻击,我输入以下内容作为我的聊天

</textarea>
<script>
alert("Hi");
</script>
<textarea>

但它没有向我显示警告框,它只是在文本区域中显示完整消息以及标签(它不会将任何标签视为特殊标签,只是将它们视为要显示的普通文本)。我尝试更改 javascript,例如 recMsg 只是聊天消息,还尝试使用 .innerHTML 但没有成功。

所以我的问题是1) 攻击失败是因为我在渲染后更改了 textarea 的值吗?

2)这种方式是否可以进行XSS。如何更改 javascript 代码以启用此攻击?

3) 不相关的问题 - 当我使用 AJAX 更改 DOM 元素时,如果我查看源代码,我没有看到任何更改(例如,在我收到几次聊天后,textarea 仍然是空的)。为什么会这样?

感谢您的回复

最佳答案

  1. 你的攻击失败了,因为你设置了value文本区域的属性。浏览器会自动为您转义字符。想一想,当您在文本区域上书写时,写 </textarea>不关闭它。通过javascript设置值是一样的。
  2. 如果你想让这次攻击成功,你必须改变$('#received').val(recMsg + $('#received').val());对于 $('#received').html(recMsg + $('#received').html()); .这将改变 innerHTML文本区域的属性。虽然我不确定它是否会正常工作。你必须尝试一下。
  3. 浏览器的“查看源代码”选项只显示您从服务器下载的内容。如果你想看到实时变化,你需要打开他们的开发者工具(通常按 F12 )。您会看到一个包含整个 DOM 树及其样式属性的检查器。

关于javascript - XSS 攻击在 textarea 标签中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357324/

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