2009-12-29 107 views
1

確定我使用這條路線SQL注入涉及

routes.MapRoute(
      "Catalog/Data", 
      "Catalog/{*data}", 
      new { controller = "Catalog", action = "Category", data = "" } 
      ); 

的URL類似於http://localhost/Catalog/Computer/Harddrives/internal

數據beening計算機/磁碟機/內部部分

我除了把它分解和驗證路線 這裏是我的關注點,atm我不檢查sql注入

我檢查路由通過獲取使用enitity框架 使用此功能

public Category GetByRoute(string Route) 
    { 
     return (from c in XEntity.CategorySet 
        .Where(c => c.Route == Route) 
        .Where(c => c.IsEnabled == true) 
       select c).FirstOrDefault(); 
    } 

數據庫類別應我擔心SQL注入與此?

回答

7

Linq2Sql和Entity Framework使用SQL參數(除了一個邊緣情況),所以你會沒事的。

在你的情況下,你實際上在CategorySet上使用Linq,並且在這種情況下linq在本地執行,所以它是接觸數據庫的CategorySet,where後面的約束運行(我相信)。在這種情況下再次沒有問題。

+0

非常感謝您回答如此迅速 – Eric 2009-12-29 10:24:17

+0

什麼是一個邊緣案例? – 2009-12-29 13:27:49

+1

Linq2Sql有ExecuteQuery。這會執行一個原始查詢,所以如果你天真地通過字符串連接建立一個查詢,那麼你可以傳入一個注入的字符串 – blowdart 2009-12-29 15:08:37