2014-03-27 62 views
0
$username = mysql_real_escape_string($_POST['username']); 
$password = mysql_real_escape_string($_POST['password']); 

$checkPassword = mysql_query("SELECT * FROM user_info WHERE Username='$username' AND Password='$password';"); 

該查詢是否可以被注射繞過,如果是的話,是否有人能夠製造出可用於安全性測試的注射劑?該查詢是否可以被注入繞過?

我試過做'x'或1 = 1,但mysql_real_escape_string設法刪除引號並將整個字段視爲字符串。 謝謝大家提前。

+1

請參閱http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string – xdazz

+0

[MySQL \ _real \ _escape \ _string?的缺點]的可能重複( http://stackoverflow.com/questions/12703420/shortcomings-of-mysql-real-escape-string) – deceze

回答

0

可以此查詢通過注射

1

mysql_real_escape_string的全部目的就是逃避傳遞給一個MySQL string literal可以安全使用的任何值被繞過。而當你使用mysql_real_escape_string逃脫的價值時,它應該是這樣的。即,只有在字符串文字中,你已經正確地完成了一切。

因此,只要您也有set the connection character set properly,因爲有case where mysql_real_escape_string still may be bypassed due to improper setting of the connection character set when using the character sets GBK or BIG5,所以無法繞過此。

相關問題