0

我是编码界的新手,

我建立了一个带有几个文本框的大型网站,所以现在我发现我一直在使用一种危险的方法在 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  

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

4

3 回答 3

4

我赞赏您希望从您的站点中删除任何 SQL 注入的可能性。

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

于 2013-01-23T13:46:44.923 回答
2

需要参数化查询来防止 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
于 2013-01-23T13:48:23.683 回答
1

使用 LINQ to SQL 可以通过为您进行参数化来帮助防止 SQL 注入攻击:

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

在此处阅读更多相关信息。

于 2013-01-23T13:49:42.550 回答