<script> 标签未在 textarea 中处理

Posted

技术标签:

【中文标题】<script> 标签未在 textarea 中处理【英文标题】:<script> tag not been processed in textarea 【发布时间】:2011-08-02 02:53:56 【问题描述】:

为了演示 XSS 攻击,我正在构建一个 Web 应用程序,它执行以下操作:

    像论坛一样工作 通过 html 文本区域获取用户的帖子并将这些消息存储在 mysql 数据库中 显示线程上用户的所有帖子。目的是展示 XSS 攻击,例如 alert("attack"); 由于对输入的过滤不足。

我正在使用带有 Apache 和 php 的 MySql 数据库。

在文本区域中输入以下输入:

<script>alert("attack");</script>

数据只是没有被添加到数据库中,并且将帖子存储到数据库中的页面中的 $_POST 方法返回了一个空字符串。但是,所有其他情况都有效。到目前为止,我还没有在 PHP 中使用任何用于输入过滤的特殊函数,因为这是一个演示 XSS 的应用程序。

但是,在手动将上述脚本添加到数据库时,会弹出预期的警报框。

有人知道怎么回事吗?

【问题讨论】:

处理输入的 php 是什么样子的还是你使用框架? 一个代码 sn-p 价值十亿字。与其编写没有意义的“$_POST 方法返回空字符串”,不如发布您在测试中运行的代码 重新发布我在下面的评论中添加的代码。发布消息页面中的代码是:'

在此处输入您的消息:

' addmessage.php页面中的代码是:'echo htmlspecialchars($_POST['message' ]);
【参考方案1】:

您是否使用 mysql_real_escape_string 或类似方法转义输入数据?如果不这样做,您的引号可能会与生成的 SQL 查询混淆。

【讨论】:

不,到目前为止,我还没有将插入查询添加到 PHP 页面中。我试图回显来自单击提交发布按钮时收到的 POST 对象的消息。但是,除了“ @Rishabh:也许尝试使用htmlspecialchars() 输出?它可能会输出但不会触发(无论出于何种原因)。 仅供参考,发帖留言页的代码为:'

在此输入您的留言:

' addmessage.php页面中的代码是:'echo htmlspecialchars($_POST['message']);'
@BradChristie 谢谢。现在添加 htmlspecialchars() 已经解决了这个问题!干杯。 @Rishabh 如果可以解决,那么您的问题可能完全是另外一回事。我认为显示您的代码仍然是个好主意

以上是关于<script> 标签未在 textarea 中处理的主要内容,如果未能解决你的问题,请参考以下文章

图表js名称标签未在vuejs中更新

技巧 | XSS的常见绕过方法

“颜色”类型的输入标签未在 IOS 中呈现

热点未在产品查看器中链接

socket.io 连接事件未在 Firefox 中触发

富文本编辑器