使用PHP防止注入SQL

时间:2010-11-29 23:44:09

标签: php sql mysql code-injection

因为我的陈述就像

"SELECT * FROM `box` WHERE `thing` = '{$variable}'

我可以简单地用

清理它
$variable = str_replace("'","\'",$variable);
"SELECT * FROM `box` WHERE `thing` = '{$variable}'

那会有用吗?我的主机不支持mysql转义,我没有使用mysqli。

5 个答案:

答案 0 :(得分:16)

使用parametrized queries(PDO可能是您最好的选择)。

答案 1 :(得分:7)

我非常怀疑你的主持人不支持mysql_real_escape_string功能。

$variable = mysql_real_escape_string($variable);

$sql = "SELECT * FROM `box` WHERE `thing` = '{$variable}'";

如果您确实没有安装MySQL,那么您可以根据您正在使用的RDBMS使用以下转义函数之一:

pg_escape_string

sqlite_escape_string

db2_escape_string

ingres_escape_string

答案 2 :(得分:1)

如果是postgres,您可以使用pg_escape_string

答案 3 :(得分:0)

讨厌重复自己,但是,再一次尝试这一个:
PHP Intrusion Detection System

答案 4 :(得分:-8)

根据作为查询的有效数据类型的类,您通常可以使用:

function cleanVar($str){
    $str = strip_tags(addslashes($str));
    return $str;
}