PDO MySQL:使用PDO::ATTR_EMULATE_PREPARES 平衡效能與安全性
簡介
簡介>選擇使用PDO的準備語句模擬(PDO::ATTR_EMULATE_PREPARES) 與否一直是爭論的話題。為了闡明這個問題,本文解決了與效能和安全性相關的常見問題。
本機預先準備語句可能會導致一次性查詢產生更高的開銷與模擬的準備好的語句相比。但是,如果重複使用預先準備語句對象,原生預先準備語句可以提高整體執行速度。
兩種方法都透過轉義查詢參數來提供針對 SQL 注入的保護。 PDO 模擬庫中的準備,而本機準備發生在 MySQL 伺服器上,但兩者都會導致安全性查詢。
確實,本機準備可以在準備時提供語法錯誤。相反,模擬準備可能只會在執行時顯示語法錯誤。這需要仔細考慮,特別是在使用 PDO::ERRMODE_EXCEPTION 時。
最近的MySQL 版本
使用支援準備語句的MySQL 版本5.1.17 及更高版本在查詢快取中,建議停用模擬(PDO: :ATTR_EMULATE_PREPARES = false)。這提供了性能和安全性方面的優勢。
以上是PDO MySQL:是否模擬準備好的語句?性能和安全性影響的詳細內容。更多資訊請關注PHP中文網其他相關文章!