时间:2011-04-09 14:53:56

标签: php mysql apache textarea

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

  1. 像论坛一样工作
  2. 通过HTML textarea从用户收集帖子并将这些消息存储在mysql db
  3. 显示线程上用户的所有帖子。目标是显示由于输入过滤不充分导致的alert("attack");等XSS攻击。
  4. 我正在使用Apache和PHP的MySql数据库。

    将以下输入输入textarea:

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

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

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

    任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:2)

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