在我的登录表单1散列用户名和密码之前,我执行查询防止SQL注入通过转换字符串数组
... ...类
private $username;
private $password;
protected function Login(){
$user = hash('sha256', $this->username);
$pass = hash('sha256', $this->password);
$this query = "..."
...
}
和其他种类的形式(像搜索表单)我转换成数组中的字符串,然后我执行查询,这样的查询应该是这样的:
$searchstring = explode(' ', $search);
//.... Some lines of PHP code... and the resulting query is: ...
$this->query = "SELECT... WHERE name LIKE 'DELETE%' OR name LIKE 'FROM%' ";
$this->query.= " OR name LIKE 'USERS%' OR name LIKE 'WHERE%' OR name LIKE '1%'";
这是否足以防止SQL注入?谢谢
请勿使用addslashes()。如果您使用PDO或mysqli使用数据绑定功能。如果你正在使用mysql_ *函数(你不应该)使用mysql_real_escape_string()。 – bobwienholt 2012-08-15 21:31:24
使用[mysql函数来转义字符串](http://ua2.php.net/manual/en/mysqli.real-escape-string.php)或PDO库(我个人比较喜欢) – pinepain 2012-08-15 21:33:24
@sudowned我觉得呕吐。 – 2012-08-15 21:41:08