2012年5月20日 星期日

【PHP】防止SQL注入攻擊 (mysql_real_escape_string)

mysql_real_escape_string()會自動在特殊字元前面加上\
例如: $a =what's what\'s
這樣一來就可以防止SQL攻擊。

例如有段程式碼如下:
$sql="SELECT * FROM test WHERE id = ' ".$id." '  pass= ' ".$passwd." ' ";

如果有人在pass裡面輸入 ' or '1'='1
那這樣不就會變 


$sql="SELECT * FROM test WHERE id =  ' test '    pass= '   ' or '1'='1  ' ";




$sql="SELECT * FROM test WHERE id =  test '    pass= '   ' or '1' '1' ";




所以我們把程式碼改成


$sql="SELECT * FROM test WHERE id =


' ".mysql_real_escape_string($id)." '


pass= ' ".mysql_real_escape_string($passwd)."";


這樣就不怕有心人了

沒有留言:

張貼留言