我公司的很多表格在应该输入的时候都没有输入。例如,当唯一有效的值是int
时,许多表都使用varchar(##)
键。由于现在有一列固定的依赖项,我不能简单地翻转所有的数据类型。
因此,在短期内,我想提供某种验证数据的方式,以防止Bobby Drop Tables中途访问。
在这个特殊的情况下,我应该运行读查询。我需要验证Order
属性:
public class Model
{
public string Order { get; set; } // In DB this is a varchar(20)
public aType Read()
{
var result = from a in table
where a.Column == Order;
select new { ... };
}
}
我如何根据我的模型验证用户输入?
Linq2Sql和Linq2Entities都在后台使用sql参数来传递查询中的任何变量。你不会受到任何SQL注入攻击,但有人可能会插入一个不仅仅是数字字符的字符串。
确保你只能插入"数字"字符串的一种方法是在数据库中创建一个约束。这将确保所有使用数据库的应用程序行为正确,但不会强制它们更改数据类型。
编辑
如果您使用Linq2Sql,并且希望在应用程序中进行检查,则可以在Linq-context中对特定类型实现部分方法OnValidate
。
使用LINQ,你正在使用它的方式,防止SQL注入。