使用MDB2防止PHP注入PHP

时间:2011-07-17 17:29:32

标签: php postgresql sql-injection mdb2

我正在试图弄清楚如何防止sqlinjection,我写了这个基本功能:function

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

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

更新 我坚持使用MDB2和pgsql

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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