我們正在爲我們的一個產品開發「API」。這將允許用戶定義他們不想從他們的「查詢」返回的列,我們將構建所需的SQL。動態生成的SQL安全問題(sql注入等)
我知道你應該總是使用參數化查詢來避免SQL注入攻擊。但是,在構建返回的列由用戶定義的語句時,是否存在安全風險?可以說我們有以下api請求。這只是說明我的意思:)
/api/customers/getall?fields=Name,Phone,Email&where=Zip=1000
一個例子中的SQL將
SELECT Name, Phone, Email FROM Customers WHERE Zip = @Zip
我並不想只是把fields參數並直接生成SQL解決這個問題,它可能會變成一個列表並返回一些默認列,如Id和Modified。
在這種情況下你應該注意什麼?你將如何防範攻擊?
- 基督教
存儲過程不是我們的選擇。它應該沒有我們需要修改專門爲這個API的數據庫。 另外你將如何創建一個SP,動態生成正確的SQL給定一組要返回的列? – 2012-01-31 11:00:21