問題:
使用prestring查詢語句?
上下文:
提供的程式碼示範了使用 mysqli 函式庫的準備好的語句查詢。然而,它目前使用 mysql_real_escape_string() 函數來清理使用者輸入。
<code class="php">$consulta = $_REQUEST["term"]."%"; ($sql = $db->prepare('select location from location_job where location like ?')); $sql->bind_param('s', $consulta); $sql->execute();</code>
答案:
不,準備好的語句提供了針對 SQL 注入的固有保護,並且正確使用時的資料操作。它們會自動清理輸入,使 mysql_real_escape_string() 變得多餘。
改進:
雖然查詢正確使用準備好的語句,但較小的修改可以提高其效率。可以不使用bind_param()方法,而是直接使用execute()方法傳遞參數。
<code class="php">$sql->execute([$consulta]);</code>
補充說明:
雖然prepared statements protected針對SQL注入,它們在輸出到頁面時不能保證資料的安全性。為了防止潛在的跨站腳本(XSS)攻擊,建議在將資料輸出到瀏覽器之前使用 htmlspecialchars() 對任何資料進行 HTML 編碼。
以上是為了安全起見,準備好的語句是否需要`mysql_real_escape_string()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!