【发布时间】:2011-10-17 13:48:03
【问题描述】:
我正在重写一个查询,该查询是为响应用户输入文本字段而创建的,以提供一些针对 SQL 注入攻击的保护。
SELECT DISTINCT (FileNameID) FROM SurNames WHERE Surname IN
('Jones','Smith','Armitage')
AND FileNameID IN ( SELECT DISTINCT (FileNameID) FROM FirstNames WHERE FirstName
IN ('John','William') )
在此过程中最多可以有 3 个其他表。 参数列表最多可以包含 50-100 个条目,因此构建参数化查询既繁琐又繁琐。
我正在尝试创建一个 Linq 查询,它应该负责参数化并提供我需要的保护。
这给了我我需要的东西
var surnameValues = new[] { "Jones","Smith","Armitage" };
var firstnameValues = new[] { "John","William" };
var result = (from sn in db.Surnames
from fn in db.FirstNames
where surnameValues.Contains(sn.Surname) &&
firstnameValues.Contains(fn.FirstName)
select fn.FileNameID).Distinct().ToArray();
我现在需要一种方法来根据用户是否在姓氏或名字文本输入框中选择/输入值来动态创建它?
任何指点将不胜感激
谢谢 罗杰
【问题讨论】: