execute($input_parameter)
是否可以像bindParam/bindValue
一樣防止sql注入?
如果答案是肯定的,bindParam()/bindValue()/execute()
對任何sql注入攻擊都無法忍受?或者我需要採取措施來防止這種攻擊?
感謝您的幫助!
execute($input_parameter)
是否可以像bindParam/bindValue
一樣防止sql注入?
如果答案是肯定的,bindParam()/bindValue()/execute()
對任何sql注入攻擊都無法忍受?或者我需要採取措施來防止這種攻擊?
感謝您的幫助!
是的,它做同樣的事情。我不能說它是無懈可擊的,因爲底層的SQL引擎本身可能是脆弱的。但那真的不在你手中了。
因此,所有的實際原因,是的,它的安全。
編輯:看看PHP Documentation(第一和第二個例子)。一個是bindParam()
,另一個是。
只要execute($input_parameters)
與單獨的bindParam/bindValue/execute
步驟一樣安全,答案似乎基本上是的。
但是,您仍可能需要採取進一步的措施,這取決於你如何構建你傳遞給您的通話PDO::prepare
查詢字符串。並不總是可以對準備好的查詢字符串中的所有內容進行參數化。例如,您不能使用表或列名稱的參數。如果允許用戶數據或任何外部數據進入該查詢字符串,則在將字符串傳遞到prepare
之前,您仍然必須清理該數據。 請參閱這些計算器問題的更多細節:
一般來說,你應該反正過濾所有輸入數據,因此,如果你想成爲額外的安全,你可以淨化任何正在使用的過濾器適合您的需要,甚至寫一個FILTER_CALLBACK自定義函數,如果你想往SQL類型的東西輸入數據。 在從用戶提供的數據來表或列名稱的情況下,共同的驗證技術是檢查值對允許的名稱的陣列。
希望這會有所幫助。祝你好運。注意安全! ;)