【发布时间】:2015-10-01 11:43:08
【问题描述】:
我知道如果我使用 linq to sql,一切都会被参数化并且 sql 注入是安全的。 但是 IQueryable 怎么样?
例如,我可以将某些实体强制转换为 Iqueryable:
var myquery = mytesttable.AsQueryable();
var qText = "name="+ "\""+DynamicSearchCondition+ "\"";
myquery = myquery.Where(qText);
然后在运行查询时,从跟踪中我可以看到传入的 DynamicSearchCondition 没有参数化。
最初我认为这不是 sql 注入证明,但后来我尝试了一些示例,但就是无法破解这个。 这是否意味着它是没有sql注入的(我认为是现在)?
如果是这样,是否意味着所有 IQueryable 都是 sql 注入安全的?
【问题讨论】:
-
我认为它不安全,请参阅此博客
http://blogs.msdn.com/b/publicsector/archive/2008/08/21/preventing-sql-injection-with-the-entity-framework-and-data-services.aspx -
你在哪里得到
Where参数 string? -
@daxu,如果你使用 DynamicLinq,可能this post 有帮助
标签: entity-framework linq sql-injection iqueryable