PDO MySQL:您應該使用 PDO::ATTR_EMULATE_PREPARES 嗎?
您正在考慮使用 PDO 來實現其安全準備好的語句和命名參數。但是,您擔心平衡效能和安全性。讓我們深入研究 PDO 模擬模式的優缺點。
效能與安全性
PDO::ATTR_EMULATE_PREPARES 可以增強效能,但可能會損害安全性。模擬準備語句使用字串連接而不是 MySQL 的本機二進位協定進行參數替換。雖然這可能更快,但它無法提供與本機準備語句相同的針對 SQL 注入的保護。
錯誤處理
使用本機準備語句,語法錯誤是準備過程中偵測到。然而,透過仿真,它們只能在執行時被檢測到。這可能會影響錯誤處理和調試。
查詢快取
舊版的 MySQL(5.1.17 之前)無法將預準備語句與查詢快取一起使用。但是,版本 5.1.17 及更高版本甚至可以快取準備好的查詢。
MySQL 版本5.1.61 和PHP 版本5.3.2
針對您的特定版本的MySQL 和PHP,您有以下選項:
建議
如果您很少在單一請求中重用準備好的語句,並且效能會下降作為優先事項,啟用模擬可能是一個可行的選擇。但是,如果安全性至關重要,強烈建議停用模擬。
其他注意事項:
透過仔細考慮上面討論的利弊,您可以做出明智的決定,平衡效能與安全性。
以上是PDO MySQL:您應該啟用 PDO::ATTR_EMULATE_PREPARES 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!