歡迎光臨
我們一直在努力

PHP使用了PDO還可能存在SQL Injection的情況

#Web 滲透與漏洞研究

“用 PDO 來防止 SQL 注入。”大概學過 PHP 的都聽說過這句話。程式碼中出現了 PDO 就行了嗎?答案肯定是否定的。接下來給大家介紹幾種使用了 PDO 還是不能防止 SQL Injection的情況。

原文出處:https://mp.weixin.qq.com/s/LPmE52XU0A01p4ZYv4wwzA

波波觀點:用了 PDO 不等於自動安全

PDO 是防禦 SQL Injection 的重要工具,但前提是正確使用 prepared statement。若程式仍把使用者輸入拼進 SQL 字串,或在欄位名、排序、表名等位置直接使用外部輸入,仍然可能產生注入風險。

常見錯誤

  • 只在部分參數使用 bind,其他片段仍用字串拼接。
  • 把 ORDER BY、LIMIT、欄位名、表名當成普通值處理。
  • 錯誤使用 emulated prepares,導致行為與預期不一致。
  • 把輸入過濾當成唯一防線,忽略資料庫 API 的正確用法。

審計建議

檢查 PDO 程式時,重點是看 SQL 字串最後如何生成。若查詢結構需要由使用者選擇,應使用白名單映射,例如前端傳 sort=date,後端只允許對應到固定欄位,而不是直接拼接。

若專案使用多個資料存取層,也要確認所有路徑都遵守同一套安全規則。常見問題是新功能使用 ORM,舊功能仍保留原始 SQL,導致防護品質不一致。

站內延伸閱讀

贊(0) 贊助
未經允許不得轉載:波波的寂寞世界 » PHP使用了PDO還可能存在SQL Injection的情況

波波的寂寞世界

Facebook聯繫我們

覺得文章有幫助,歡迎贊助支持本站

感謝你的支持,我會持續整理資安筆記、實務經驗與有價值的技術內容。

贊助本站