防止ASP.NET中的sql注入

防止ASP.NET中的sql注入,asp.net,sql,sql-server,regex,Asp.net,Sql,Sql Server,Regex,我是编码界的新人 我用几个文本框构建了一个大型网站,因此现在我发现我一直在使用一种危险的方法,通过以下方式在SQL server中插入数据: execSQL("insert into Dossier(ID_Dossier,Nom_Giac) values(" & id_dossier.text & "," Nom_gaic.text & "')") Public Function execSQL(ByVal req As String, Optional ByVal

我是编码界的新人

我用几个文本框构建了一个大型网站,因此现在我发现我一直在使用一种危险的方法,通过以下方式在SQL server中插入数据:

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  

我只是想知道,在我的整个网站中,是否有任何快速的方法可以解决这个问题。

我很高兴您希望从您的网站中删除任何SQL注入的可能性


也就是说,没有快速、神奇的“查找并替换易受攻击的代码”功能;您需要进入您的系统并使用更新任何类似的调用。

需要参数化查询来防止SQL注入。下面是一个来自这个问题的例子:


使用LINQ to SQL可以为您参数化,从而有助于防止SQL注入攻击:

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


阅读更多相关信息。

使用参数化查询,请参见此处请原谅我的讽刺,但恐怕最快的方法是开始更快地键入。。。这需要一些时间来修复。
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