我公司的许多表格在适当的时候都不会输入输入。例如,当仅有有效值是varchar(##)
时,许多表都用int
键。由于现在有依赖关系的清单,我根本不能只是翻转所有数据类型。
因此,在短期内,我想提供一种验证数据的方式,以防止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上下文中的特定类型上实现部分方法OnValidate
。
关于c# - 当表为varchar()时,如何验证数据免受注入(inject)攻击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5914019/