0

テーブルにデータを挿入する必要がある場合は、SqlParameter を使用するのが最適です。しかし、SqlParameter にはまだ SQL インジェクションの欠陥があると誰かが言っているのを聞きました。証明は、SQL 文字列に接続し、exec コマンドを実行することです。この場合、SQL インジェクションにはまだいくつかのリスクがあります。

しかし、私の質問は、SqlParameter を使用して、exec コマンドを使用せずにデータをテーブルに挿入する場合、SQL インジェクションのリスクがまだあるということです。

4

2 に答える 2

1

はい、クエリに動的に追加されるすべてのステートメントにパラメーターを使用できる限り。
残念ながら、ほとんどのフレームワークでは許可されていませんが、いくつかの単純なデータ型についてのみです。

于 2013-06-27T07:23:56.520 に答える
1

execこの例の問題は、2 つのクエリを実行していることです。最初のクエリは連結を使用して 2 番目の SQL 文字列を作成し、次に 2 番目のクエリが実行されます。

コマンドとデータ チャネルを分離している限り (クエリが実行される変数の値とは無関係に実行されるクエリを維持する)、SQL インジェクションを使用することはできません (SQL インジェクションの定義では、コマンド チャネルに何かを挿入するためのデータ チャネル)

于 2013-06-27T07:21:17.430 に答える