2011-07-17 43 views
3

我试图找出如何防止SQL注入攻击,我写了这个基本功能:功能防止SQL注入PHP中的MDB2

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

但是有人告诉我还需要考虑的十六进制值,但如何我要这样做吗?

更新 我坚持用MDB2和pgsql的

+0

http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – Jacob

+0

不幸的是我坚持MDB2 :( –

+0

如果你不打算使用PDO ,看看你正在使用的连接类型的数据库功能,它们通常具有已经包装好的逃生功能 – afuzzyllama

回答

6

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

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

+0

+1为伟大的链接 – cspray

+1

博比表不是一个“伟大的链接”。 – Fuser97381

+0

参与示例显示为什么问题是问题?检查。解释如何用多种语言处理问题?检查。提供改进或报告问题的邀请?检查。在这里看起来相当不错。 – Quentin

1

首先,不要自己写任何逃脱函数。他们很可能被打破,数据库库很可能包含一个适当的。对于mysql,你可以使用mysql_real_escape_string

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

2

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