2012-07-27 68 views
0

那么,我正在阅读有关SQL注入的知识,但是我没有意识到它可能发生在Visual Basic .NET中 - 我使用的是2008-因为我刚刚在PHP中读到它,问题是:我怎样才能避免这种情况?因为一个朋友在几分钟前就做出了这个问题,这是我的桌面应用程序的安全问题。在Visual Basic 2008中的SQL注入

-Thanks-

+0

逃离你的字符串?这是我在Stackoverflow上见过的最迷惑的问题。添加更多细节。尝试包括一些代码。 – Wug 2012-07-27 14:03:33

+0

基本上你使用参数化查询。搜索这里你会发现它的负载。 – 2012-07-27 14:13:45

+0

谢谢多数民众赞成我在做什么() – DFabeiro 2012-07-27 14:25:27

回答

1

SQL注入攻击不是语言特定的。如果您接受用户输入并将其直接插入到SQL查询中而不进行消毒,那么您的应用程序很容易受到SQL注入的影响。

有关如何避免SQL注入攻击的更多详细信息,请参见this answer

您应该从中取走的一般想法是永远不要相信用户输入

1

这适用于所有相似的语言:

  1. 当你可以用准备好的语句来访问数据库。避免通过将用户输入连接到查询来构建数据库查询。
  2. 验证您打算在数据库语句中刻意使用的任何数据。如果一个字段应该是一个整数,那么在数据库中使用它之前,请检查它是否为整数。
  3. 如果某种形式的ORM存在,它可能会为你做#1和#2(至少在某种程度上#2)。 LINQ应该为你处理这个问题。如果您选择使用Linq,则使用SqlParameter来构建查询。
  4. 如果可能,请使用存储过程。
  5. 即使在存储之后,也要小心用户输入。
+0

Thanx,但我的意思是没有功能或类似的东西?像在PHP中创建你的代码来避免这些? – DFabeiro 2012-07-27 14:15:16

+0

在PHP中,你不应该使用类似mysql_real_escape()的东西,你应该使用带有参数化查询的MySQLi。同样在VB .NET中,你应该使用LINQ和SqlParameter(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx#Y213)来构建你的查询。 – hsanders 2012-07-27 14:18:04

+0

非常感谢 – DFabeiro 2012-07-27 14:26:44