【问题标题】:PHP And PDO preventing Javascript injectionPHP 和 PDO 防止 Javascript 注入
【发布时间】:2011-04-12 11:34:37
【问题描述】:

我有一个使用 PDO 用 PHP 编写的网站。我正在使用 bindParam() 函数绑定到 sql 插入查询:

("insert into Table (id, date, data) VALUES (?, ?, ?)")

但我可以插入一个包含

的字符串
"<script>window.location="google.com"</script>"

如何预防?

谢谢!!!

【问题讨论】:

    标签: php javascript pdo code-injection


    【解决方案1】:

    假设你的意思

    <script>window.location="google.com"</script>
    

    您应该担心行显示时的注入保护,因为您不想用 HTML 实体填充数据库。

    在显示数据库内容的页面上使用htmlspecialchars()[1]。

    [1]http://www.php.net/manual/en/function.htmlspecialchars.php

    【讨论】:

    • 什么意思?我不应该首先阻止这些进入数据库吗?
    • 你可以过滤输入到数据库或过滤输出到浏览器,只要确保你没有过滤两次。我目前的偏好是过滤输出,以免数据库中到处都是 HTML 实体。
    【解决方案2】:

    PDO 不会阻止您这样做。您需要自己处理字符串:

    1. 如果您根本不需要&lt;script&gt; 标签,请使用strip_tags
    2. 如果您想要这些标签但不希望它们执行,请使用htmlentities

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 2012-08-04
      • 2018-03-23
      • 2011-10-18
      • 2012-11-20
      相关资源
      最近更新 更多