3 回答

TA貢獻1788條經(jīng)驗 獲得超4個贊
嚴格來說,實際上不需要轉(zhuǎn)義,因為參數(shù)值永遠不會插值到查詢字符串中。
查詢參數(shù)的工作方式是在調(diào)用時將查詢發(fā)送到數(shù)據(jù)庫服務(wù)器prepare(),然后在調(diào)用時將參數(shù)值發(fā)送到數(shù)據(jù)庫服務(wù)器execute()。因此,它們與查詢的文本形式分開存放。SQL注入永遠不會有機會(提供的PDO::ATTR_EMULATE_PREPARES是錯誤的)。
因此,可以,查詢參數(shù)可以幫助您避免這種形式的安全漏洞。
他們是否100%證明沒有任何安全漏洞?不,當然不是。您可能知道,查詢參數(shù)僅在SQL表達式中代替單個文字值。您不能用單個參數(shù)替代值列表,例如:
SELECT * FROM blog WHERE userid IN ( ? );
您不能使用參數(shù)使表名或列名動態(tài)化:
SELECT * FROM blog ORDER BY ?;
您不能將參數(shù)用于任何其他類型的SQL語法:
SELECT EXTRACT( ? FROM datetime_column) AS variable_datetime_element FROM blog;
因此,在很多情況下,您必須在prepare()調(diào)用之前將查詢作為字符串處理。在這些情況下,您仍然需要仔細編寫代碼以避免SQL注入。

TA貢獻2016條經(jīng)驗 獲得超9個贊
從SQL注入是安全的。
幾件事情不安全:
拒絕服務(wù)(導(dǎo)致創(chuàng)建過多的行)
跨站點腳本攻擊(如果標題回顯給另一個用戶)
安全不僅僅是阻止SQL注入。
添加回答
舉報