【发布时间】:2017-01-14 12:41:09
【问题描述】:
我正在建立一个IQueryable,我在其中应用相关过滤器,我在这里遇到了这行代码。
items = items.OrderBy(string.Format("{0} {1}", sortBy, sortDirection));
这个 sn-p 是否容易受到 SQL 注入的攻击?或者这些(字符串)参数是否在幕后参数化?我以为所有 Linq 查询都为我转义和参数化了,但我能够像这样直接传递一个字符串这一事实让我失望。
【问题讨论】:
-
这种说法对你有用吗?你有实现它的静态扩展方法吗?我不熟悉
OrderBy不带lamba表情。 -
此扩展位于
System.Linq.Dynamic命名空间中。带有方法签名static IQueryable<T> OrderBy<T>(this IQueryable<T> source, string ordering, params object[] values)。 -
看起来 System.Linq.Dynamic 是托管在 CodePlex 上的开源项目。源代码位于dynamiclinq.codeplex.com/SourceControl/latest#DynamicLinq/…。据我所知,他们正在获取字符串数据并使用它来修改表达式树,所以,不,它不容易受到 SQL 注入的攻击。
标签: c# sql entity-framework sql-injection