【问题标题】:Preventing SQL injection in PHP with MDB2使用 MDB2 防止 PHP 中的 SQL 注入
【发布时间】:2011-10-07 05:16:00
【问题描述】:

我正在研究如何防止sqlinjection,我写了这个基本函数:function

antiInjectie($inputfromform){
    $temp = str_replace("'", "`",$inputfromform);
    $temp = str_replace("--", "~~",$temp);
    return htmlentitites($temp);
}

但是有人告诉我也要考虑十六进制值,但我该怎么做呢?

更新 我被 MDB2 和 pgsql 困住了

【问题讨论】:

  • 不幸的是我坚持使用 MDB2 :(
  • 如果您不打算使用 PDO,请查看您正在使用的连接类型的 DB 函数。它们通常已经封装了转义函数。

标签: php postgresql sql-injection mdb2


【解决方案1】:

Bobby-Tables 有很好的防止 SQL 注入的指南。

简而言之:不要自己玩弄输入,使用允许绑定参数的数据库 API 方法。

【讨论】:

  • 鲍比桌不是一个“伟大的链接”。
  • 引人入胜的例子展示了为什么问题是一个问题?查看。用多种语言解释如何处理问题?查看。邀请提供改进或报告问题?查看。这里看起来很不错。
【解决方案2】:

首先,不要自己编写任何转义函数。它们很可能被破坏,并且数据库库很可能包含正确的库。对于 mysql,你可以使用mysql_real_escape_string

一个更好的长期解决方案不是将完整的查询创建为文本,而是使用准备好的查询并在执行期间传递值。对于 mysql,请检查 mysqli 扩展名。

【讨论】:

    【解决方案3】:

    使用MDB2,您可以执行与相关问题Best way to stop SQL Injection in PHP 中提出的PHP 原生PDO abstraction 相同的操作。您可以使用带有 prepare and executequoting 的准备好的语句并手动插入值。

    【讨论】:

      【解决方案4】:

      使用pg_query_params(),这是使用 PHP 和 PostgreSQL 避免 SQL 注入的最简单函数。

      【讨论】:

        猜你喜欢
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多