簡體   English   中英

如何清理查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM