运用LINQ轻松清除SQL注入式攻击
2007-09-01 13:08:07 来源:WEB开发网保障LINQ数据库存取的安全
LINQ to SQL在专用于数据存取时,清除了SQL注入存在于你的应用程序中的可能性,原因很简单:LINQ代表你执行的每次查询都加上了具体的参数。在LINQ从你植入的查询语句中构建SQL查询时,无论源自何处,提交给查询的任何输入都被当作字面值。而且,通过IntelliSense和编译时的语法检查,LINQ与Visual Studio Orcas的集成可以帮助开发人员构建合法的查询。编译器可以捕捉大量的对查询的错误使用,这些错误使用可以将功能上的缺陷或其它类型的漏洞带入到你的应用程序中。与此不同的是,在你获知它正确与否之前,你编写的SQL语句只在运行时刻在数据库系统上解析。针对LINQ to SQL的唯一攻击途径是攻击者欺骗LINQ形成非法的或无意识的SQL。幸运的是,语言和编译器就是设计来保护这个方面的。
在清楚了上述的基本思想后,下面我们就展示应该如何运用LINQ to SQL防护SQL注入式攻击,并具体讨论一个客户搜索的例子。第一步是创建数据库中有关数据的对象模型。Visual Studio Orcas包含一个新的对象关系设计器(Object Relational Designer),这个设计器使你能够生成一个完全的对象模型。为了为我们的Northwind Customers表构建一个对象模型,你通过选择“增加新项目…”并选择“LINQ to SQL File”模板(这个模板是在对象关系设计器中打开的),在应用程序中创建一个LINQ to SQL的数据库。为了给 Customers表自动构建完全的对象模型,在服务器资源管理器 (Server Explorer)中选择这个表,并将它拖到对象关系设计器的设计层面上。在这个例子中,对象关系设计器增加了一个名为Customers.designer.cs的文件,这个文件以代码的形式定义了你将要使用的类,而不是编写代码直接与数据库进行交互。
更多精彩
赞助商链接