我一直在忙着使用我的PHP代碼和SQL語句,雖然我知道在處理這個時可以使用預處理語句,但我仍然想知道SQL注入是如何在這裏執行的。在這種情況下可以執行SQL注入嗎?
$name = mysql_real_escape_string(htmlspecialchars($_POST["Name"]));
$age = (int) mysql_real_escape_string(htmlspecialchars($_POST["Age"]));
$amount = (int) mysql_real_escape_string($_POST["Amount"]);
$sql = "insert into nice_table set
name='{$name}',
age='{$age}',
amount='{$amount}'";
$db->sql_query($sql);
執行SQL注入的時候,我不知道很多關於各種不同的方法,但我已經看到了東西,通過這個就好了,沒有任何數據庫錯誤。使用它而不是經典的準備語句實際上是否安全?
例如,什麼會通過?我一定錯過了一些東西,因爲它不能這麼簡單,而且仍然像預先準備的陳述一樣緊張,對吧?
'htmlspecialchars'作出的重要補充是不是爲了防止SQL注入。你應該做的是學習使用帶有綁定變量的預處理語句。那麼你不會想知道「我做對了嗎?」 –
這兩個整數的轉換意味着你不需要這些行上的其他任何東西 - 如果已經將它們轉換爲整數,那麼通過這些路由無法進行SQL注入。至於'$ name','htmlspecialchars'也不是必需的。如果您正在使用它來保護XSS,則在呈現名稱時使用此功能是正常的,而不是在存儲時使用此功能。 – halfer