這是我第一次使用MVC進行開發,並希望使其安全。在MVC中控制SQL注入
當我使用HtmlEncode時,它將字符串轉換爲等效的HTML字符串。
用戶可以在搜索中輸入例如ali'或ali--並且它們存在於我的數據庫中。如何從SQL注入控制我的搜索和登錄?
還有防止腳本注入的任何教程或最佳做法?
這是我第一次使用MVC進行開發,並希望使其安全。在MVC中控制SQL注入
當我使用HtmlEncode時,它將字符串轉換爲等效的HTML字符串。
用戶可以在搜索中輸入例如ali'或ali--並且它們存在於我的數據庫中。如何從SQL注入控制我的搜索和登錄?
還有防止腳本注入的任何教程或最佳做法?
只要您使用參數化查詢或NHibernate或Entity Framework等ORM,您就不必執行任何操作來防止SQL注入。作爲對服務器的RPC調用的一部分,參數被傳遞給實際SQL語句之外的服務器。大多數ORM使用參數化查詢進行性能推理,所以它們不容易受到SQL注入的攻擊。
只有通過連接字符串值來創建SQL語句時,SQL注入纔有可能。
也就是說,您仍然需要警惕用戶輸入以防止腳本注入攻擊。幸運的是,ASP.NET MVC已經提供了請求驗證機制(請參閱Understanding Request Validation)。
但我厭倦了通過傳遞參數 – AMH 2012-01-31 12:40:09
無論你傳遞給參數(還是參數I meand一個DbParameter派生的對象,如SqlParameter(http://msdn.microsoft.com/en-us/library/system.data.common.dbparameter.aspx),它將作爲一個簡單的字符串傳遞給服務器,它永遠不會執行。 如果您使用存儲的值在應用程序的其他部分通過字符串連接構造SQL語句,仍然可能會遇到麻煩。 – 2012-01-31 12:50:25
你如何訪問你的數據庫? LINQ?實體框架? – 2012-01-31 12:22:29
我使用正常的,你更喜歡LINQ或實體框架 – AMH 2012-01-31 12:23:45
看看這[SO鏈接](http://stackoverflow.com/questions/8676/entity-framework-vs-linq-to-sql)... 。兩者都會檢查你的sql注入... – 2012-01-31 12:26:30