PHP PDO 語句參數限制:表和列名稱
PHP 資料物件(PDO) 中的準備語句透過防止SQL 注入來增強安全性攻擊。但是,不可能動態地將表名或列名作為參數傳遞給預準備語句。
為什麼有限制
PDO 的預先準備語句旨在確保所有使用者輸入在作為 SQL 查詢執行之前經過驗證。允許表或列名稱作為參數會產生安全漏洞,因為惡意使用者可能會操縱查詢並獲得對敏感資料的未經授權的存取。
替代解決方案
至安全地將表名插入 SQL 查詢中,您應該手動過濾和清理資料。一種方法是使用 switch() 語句建立允許的表名白名單:
function buildQuery($get_var) { switch ($get_var) { case 1: $tbl = 'users'; break; default: throw new Exception('Invalid table name'); } $sql = "SELECT * FROM $tbl"; }
透過使用此方法,您可以確保只有與預期值相符的使用者輸入才能在詢問。這種方法可以防止潛在的安全漏洞,同時仍保持準備好的語句的優點。
以上是PHP PDO 準備語句可以將動態表和列名稱當作參數處理嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!