回答

6

否。阻止SQL注入攻击的策略是类似的(参数化查询而不是动态构建,存储过程,检查恶意值的参数等)。

是的,因为你没有用EF或Linq To Sql编写任何SQL代码,所以你可以考虑额外的一层保护。

+0

直接从MSDN:“LINQ to SQL将您编写的查询转换为参数化SQL查询(以文本形式)并将它们发送到SQL服务器进行处理。“如果你没有使用参数化查询,这只是一个额外的保护层,完全有可能在不使用Linq的情况下编写参数化查询 – Brian 2010-10-21 13:23:17

+0

@Brian - 我从来没有说过你不能在没有LINQ的情况下编写参数化查询。在我的第一条语句中说完全相反,LINQ to SQL只是为你生成它们(因为有很多开发者仍然没有自己编写参数化查询)。 – 2010-10-21 13:26:47

-1

如果您在SQL Server中使用存储过程,则更难以产生sql注入错误。

+0

-1,这是不准确的,存储过程,如果你建立存储过程中的动态SQL本身不提供保护。唯一真正的预防是参数化查询。这通常隐含地包含存储过程,因为大多数情况下通常不会在其中执行动态sql,而是陈述使用的存储过程是误导性的,并且掩盖了为什么它们可能会抵制sql注入。 – 2010-10-21 12:55:38

1

为保护系统免遭sql注入,您可以采取的大部分工作都在数据库之外,因此没有足够的理由来更改数据库引擎。

您可能想看看来自Microsoft的WPL库。

在Microsoft Web防护库(WPL)是一套.NET程序集,这将有助于保护您的网站,现在,未来和过去的。在WPL包括

AntiXSS
AntiXSS提供的编码功能对用户的输入,包括HTML,HTML属性,XML,CSS和JavaScript万千。

  • 白名单:AntiXSS与标准的.NET框架编码不同,使用白名单方法。所有不在白名单中的字符将使用正确的编码类型规则进行编码。虽然这是以性能为代价的,但AntiXSS已经在考虑性能的情况下编写。
  • 安全全球化:网络是一个全球性的市场,而跨网站脚本是一个全球性问题。攻击可以在任何地方进行编码,Anti-XSS现在可以防止以数十种语言编码的XSS攻击。

安全运行时引擎
安全运行时引擎(SRE)提供了在你现有网站的包装,以确保普通的攻击媒介不是让你的应用程序。保护作为标准配置提供的

  • 跨站点脚本
  • SQL注入