2013-01-23 200 views
0

我是一个新的编码的世界,防止SQL注入ASP .NET

我建了一个大型网站有几个文本框,所以我现在弄清楚,我一直在使用以危险方法像这样的一些东西将在SQL服务器数据:

execSQL("insert into Dossier(ID_Dossier,Nom_Giac) values(" & id_dossier.text & "," Nom_gaic.text & "')") 

Public Function execSQL(ByVal req As String, Optional ByVal type As String = "r") 
     cmd = New SqlCommand 
     cmd.CommandText = req 
     cmd.Connection = con 
     openCon() 
     If type = "r" Then 
      Return cmd.ExecuteReader(CommandBehavior.CloseConnection) 
     Else 
      Return cmd.ExecuteNonQuery 
     End If 
     closeCon() 
    End Function 

我只是想知道,如果在我的整个网站来解决这个问题的任何快捷方式。

+2

使用**参数化查询**,请参阅http://stackoverflow.com/questions/542510/how-do-i-create-a-parameterized-sql-query-why-should-i – mattytommo

+0

对不起讽刺,但恐怕最快的方法是开始_typing更快_...这需要一些时间来解决。 – ppeterka

回答

1

使用LINQ to SQL可以帮助防止SQL注入攻击通过参数为您提供:

的LINQ to SQL通过SQL参数传递所有的数据到数据库。因此,虽然SQL查询是动态组合的,但这些值是通过参数来替代服务器端的,以防止SQL注入攻击的最常见原因。

阅读更多关于它here

4

我赞同你想从你的网站中删除任何SQL注入的可能性的事实。

也就是说,没有快速,神奇的“发现和替换我的弱点代码”功能;您需要进入您的系统并使用parameterized queries更新任何类似的呼叫。

2

需要参数化查询来防止SQL注入。这里有一个例子,从这个问题采取:How do I create a parameterized SQL query? Why Should I?

Public Function GetBarFooByBaz(ByVal Baz As String) As String 
    Dim sql As String = "SELECT foo FROM bar WHERE baz= @Baz" 

    Using cn As New SqlConnection("Your connection string here"), _ 
     cmd As New SqlCommand(sql, cn) 

     cmd.Parameters.Add("@Baz", SqlDbTypes.VarChar, 50).Value = Baz 
     Return cmd.ExecuteScalar().ToString() 
    End Using 
End Function