当表是varchar()时,我如何验证数据免受注入攻击



我公司的很多表格在应该输入的时候都没有输入。例如,当唯一有效的值是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注入。

相关内容

  • 没有找到相关文章

最新更新