2009-12-29 90 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