0

私はコーディングの世界では初めてですが、

私はいくつかのテキストボックスを備えた大規模なWebサイトを構築したので、次のような方法で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

        End Function  

LINQ to SQLを使用すると、Webサイト全体でこの問題を解決できるかどうかを知りたいだけです。そしてそれを使用するために、私はこのコースを流しています:

http://www.upsizing.co.uk/Art34_IntergratingASPSecurity.aspx

4

2 に答える 2

5

LINQ to SQL を使用すると、Web サイト全体でこの問題を解決できるかどうかを知りたいだけです。

技術的には、クエリに現在欠けているすべてのパラメーターのサナタイズを内部的に処理するため、それは可能ですが、既存のコードを使用して問題を解決できないというわけではありません。SqlParametersを使用するようにクエリを更新するだけです。

command.CommandText = "INSERT INTO Dossier(ID_Dossier,Nom_Giac) values(@id, @giac)"
command.Parameters.AddWithValue("@id" , id_dossier.Text))
command.Parameters.AddWithValue("@giac", Nom_giac.Text)) 
于 2013-01-24T13:35:11.117 に答える
1

SQL インジェクションのためだけに LINQ to SQL を使用する必要はありません。行ったことを使用して、次のようなパラメーターを使用するように変更できます。

execsql("insert into Dossier(ID_Dossier,Nom_Giac) values(@dossier, @nom", param1, param2)

これらのパラメーターは、コマンドに手動で追加する必要があります。

cmd = New SqlCommand
cmd.CommandText = req
cmd.Parameters.Add("ID_Dossier", <Type>).Value = dossier
cmd.Parameters.Add("Nom_Giac", <Type>).Value = nom

.
.

したがって、メソッドはパラメーターの ParamArray を受け入れ、それらをコマンドに渡します。明らかに、解決策は私が提供したものよりも一般的である必要がありますが、うまくいけば、これで始めることができます.

于 2013-01-24T13:36:55.903 に答える