sqlCommand.Parameters.Add(sqlParam) は、「Table」、「Drop」などの予約語をチェックしますか。基本的には、上記を使用して、SQL インジェクションを回避する方法を知りたいと思います。
質問する
128 次
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 に答える