[英]How to sanitize the query?
我有這個SQL查詢要清理:
SELECT * FROM navigation_$cat ORDER BY parent ASC, prio ASC
問題是我無法盡快獲得$ cat,因為它是通過AJAX發送的,並指出需要訪問哪個數據庫。 如何創建一個比簡單地將字符串放在一起更安全的PDO語句?
您可以實施白名單,但另一個選擇是使用以下方法檢查有效輸入:
SHOW TABLES LIKE :tblname
和'navigation_'.$cat
作為參數。 檢查這是否恰好返回一個表,並且返回的表與傳遞的參數完全匹配。
一旦完成,您就知道可以安全地插入查詢,因為您已經確定它確實是有效的表名。
話雖這么說,“從一個未知的提前表中動態選擇”通常表明您在設計數據庫時出錯,並且您可能只應該在其中有一個帶有category
列的navigation
表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.