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

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

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

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

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

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

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

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

有人知道怎么回事吗?

【问题讨论】:

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

    在此处输入您的消息:

    ' addmessage.php页面中的代码是:'echo htmlspecialchars($_POST['message' ]);

标签: php mysql apache textarea


【解决方案1】:

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

【讨论】:

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

    在此输入您的留言:

    ' addmessage.php页面中的代码是:'echo htmlspecialchars($_POST['message']);'
  • @BradChristie 谢谢。现在添加 htmlspecialchars() 已经解决了这个问题!干杯。
  • @Rishabh 如果可以解决,那么您的问题可能完全是另外一回事。我认为显示您的代码仍然是个好主意
猜你喜欢
  • 2011-08-09
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2014-01-13
相关资源
最近更新 更多