我儘量避免爲每個更新或插入寫入SQL代碼。相反,PHP函數接受一些參數(添加或更改,tablename,fields-list)並從中構建SQL。這與使用參數化語句(mysqli)的首選方法類似但不完全相同。通過參數構建SQL字符串的一個函數。安全風險?
我的創造SQL的方式在黑客面前留下了燦爛的笑容嗎?
我儘量避免爲每個更新或插入寫入SQL代碼。相反,PHP函數接受一些參數(添加或更改,tablename,fields-list)並從中構建SQL。這與使用參數化語句(mysqli)的首選方法類似但不完全相同。通過參數構建SQL字符串的一個函數。安全風險?
我的創造SQL的方式在黑客面前留下了燦爛的笑容嗎?
哦是的 - 見Wikipedia,強制性xkcd reference。
如果允許任何用戶輸入被添加到SQL查詢中,這只是一個安全風險。如果您使用的是源代碼中定義的常量參數,但您的網站用戶的實際值應該始終使用綁定參數,並且不會直接添加到SQL查詢中,那麼您可以很好。
是的,除非您可以投入大量資源來測試您的濫用/濫用功能,否則存在安全風險。
還有其他一些因素需要考慮。構建動態SQL降低了數據庫緩存查詢的能力 - 每次調用函數時,查詢都將被解析爲新的查詢。這可能會對性能產生重大影響。使用綁定參數不會產生相同的問題,因爲數據庫可以將參數識別爲查詢的可變部分。