在我的登錄表單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