<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 方法返回空字符串”,不如发布您在测试中运行的代码。 重新发布我在下面的评论中添加的代码。发布消息页面中的代码是:'在此处输入您的消息:
【参考方案1】:您是否使用 mysql_real_escape_string 或类似方法转义输入数据?如果不这样做,您的引号可能会与生成的 SQL 查询混淆。
【讨论】:
不,到目前为止,我还没有将插入查询添加到 PHP 页面中。我试图回显来自单击提交发布按钮时收到的 POST 对象的消息。但是,除了“ @Rishabh:也许尝试使用htmlspecialchars()
输出?它可能会输出但不会触发(无论出于何种原因)。
仅供参考,发帖留言页的代码为:'在此输入您的留言:
@BradChristie 谢谢。现在添加 htmlspecialchars() 已经解决了这个问题!干杯。 @Rishabh 如果可以解决,那么您的问题可能完全是另外一回事。我认为显示您的代码仍然是个好主意以上是关于<script> 标签未在 textarea 中处理的主要内容,如果未能解决你的问题,请参考以下文章