我用
System.Linq.Dynamic.DynamicExpression.ParseLambda()
从用户输入动态构建Where表达式的条件。
DynamicExpression.ParseLambda是否能够抵抗C#注入类似于着名的SQL注入?我试过简单的攻击,就像这个:
Where("Field1 == \"f1\" || Field2 == 222 || System.Diagnostics.Process.GetProcessById(100).Id == 100")
并得到了预期的异常,但我想确保ParseLambda不能对服务器做任何有害的事情,只允许操作参数的属性/字段评估和常量比较运算符execution.System.Linq.Dynamic。