0

sqlCommand.Parameters.Add(sqlParam) は、「Table」、「Drop」などの予約語をチェックしますか。基本的には、上記を使用して、SQL インジェクションを回避する方法を知りたいと思います。

4

2 に答える 2

2

それはすべて、実行している SQL のパラメーターをどうするかによって異なります。.Parameters.Add() を使用することの良い点は、値が 1 つの大きなチャンク-o-SQL の一部ではなく、個別に渡されることです。もちろん、その後どうするかはあなた次第です。

次のようなことをするとします。

SELECT * FROM myTable WHERE customer_nr = @customer_nr

その場合、「ハッカー」が';DROP TABLE myTable --. 「;DROP TABLE myTable --」という名前の顧客がいないため、クエリは単に何も返しません。

ただし、次のように使用する場合:

SELECT @sql = 'SELECT * FROM myTable WHERE customer_nr = ''' + @customer_nr + ''''
EXEC (@sql)

次に、システムの目的を無効にすると、ハッカーは SQL インジェクションのようなことを実行できるようになります。

于 2013-10-03T10:38:12.410 に答える
0

いいえ、パラメータを予約語として扱いません。SQL インジェクションを回避するには、パラメーター化されたストアド プロシージャを使用するのが最善の方法です。

于 2013-10-03T08:25:37.990 に答える