3

我试图弄清楚如何防止sqlinjection,我写了这个基本函数:函数

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

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

更新 我坚持使用 MDB2 和 pgsql

4

4 回答 4

6

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

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

于 2011-07-17T17:31:17.443 回答
2

使用MDB2,您可以执行与 PHP 的本机PDO 抽象相同的操作,该抽象在相关问题Best way to stop SQL Injection in PHP 中提出。您可以使用带有prepareandexecute的准备好的语句,也可以手动引用和插入值。

于 2011-07-17T17:48:59.687 回答
2

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

于 2011-07-17T19:57:22.127 回答
1

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

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

于 2011-07-17T17:33:02.817 回答