2012-12-01 97 views
6

假設我有一個充滿健康記錄的數據庫和一個ASP.NET MVC應用程序。 假設有人使用URL「/ api/medicalRecords?$ filter = id gt 0」來調用Ajax請求。 在我看來,它是開放的SQL注入 - 就像10-15年前一樣...SQL注入的OData關注

這是否意味着它是通過標準的SQL注入開放,還是依賴於服務器端(我使用IQueryable結果和實體框架4)?

我知道認證機制是必要的 - 但對於這個問題的緣故,假定沒有任何認證機制提供...

回答

6

嘗試閱讀這篇博客,它提供了有關的OData和SQL注入非常詳細信息:

http://kscottmorrison.com/tag/sql-injection/

... OData的,當然,是數據源連接,所以注射ISN ' 問題 - 只要把它放在首位就足夠了。那麼,什麼 是非常重要的OData帶是嚴格管理這是什麼 連接是能夠做到的事情......

+0

正是我在尋找...和谷歌沒有多大幫助:-)。 現在我明白這一切都取決於我如何管理連接並將數據公開給應用程序用戶。 – lionheart

3

WCF數據服務將參數從濾波器消除了SQL注入的可能性值。

我建議查看在數據庫分析器中執行的實際SQL查詢。

+0

所以,讓我明白了 - 我不得不使用WCF調用實體框架數據模型?以及如果我直接使用Enitity框架數據模型會發生什麼? – lionheart

+0

那不是你已經在做什麼?你的問題是關於.NET中的OData,它以WCF數據服務的形式出現。 –

+0

不,這是ASP.NET MVC應用程序,我刪除了使用WCF ... 雖然,即使我使用WCF,如果標識字段中的id大於0,對於WCF仍然是合法的... – lionheart