我在本地主機上有一個簡單的註冊表單(仍在測試),我想知道它是否可以被SQL注入攻擊?在註冊表格中避免SQL注入php
代碼:
$name = mysql_real_escape_string($_POST['name']);
$password = mysql_real_escape_string($_POST['password']);
$password = md5($password);
$email = mysql_real_escape_string($_POST['email']);
$refId = $_GET['refid'];
$ip = $_SERVER['REMOTE_ADDR'];
$add = mysql_query("INSERT INTO `users` (`name`, `password`, `email`, `refId`, `ip`)
VALUES('$name','$password','$email','$refId', '$ip')") or die(mysql_error());
那是安全的,也可以使用別人SQL注入(我想知道怎麼樣)?我怎樣才能避免注射?
您是否已閱讀此文件(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)?準備好的語句,並儘可能安全:使用主DB和存儲過程,如果需要的話,用你自己的函數解析字符串 – 2012-07-10 17:00:55
避免使用mysql_庫注入需要你爲每一個單獨的事情做這樣的單調乏味的事情查詢,即使如此,你也不能保證安全。避免注入的標準方法是使用預先準備好的查詢,它告訴數據庫引擎,它不必將您傳遞的字符串視爲您指定的查詢中的參數以外的任何內容。 PHP有兩個庫,mysqli和PDO。谷歌他們並閱讀準備好的查詢。它需要更多的工作來設置,但它是值得的。 – octern 2012-07-10 17:00:58
存儲過程不是必需的,以避免SQL注入,雖然這將工作;準備好的語句是最簡單的方法,或者像Doctrine或Propel這樣的ORM。 – halfer 2012-07-10 17:03:23