0

私の理解では、パラメーター化されたクエリとストアド プロシージャの両方が SQL インジェクションの防止に役立つということです。

パラメータ化されたクエリは、SQL を注入することを不可能にしますか?

非常に悪いストアド プロシージャを使用したパラメータ化されたクエリにより、SQL を挿入できなくなりますか?

上記のいずれかの例はありますか?ありがとう

4

1 に答える 1

1

はい、パラメーター化されたクエリとストアド プロシージャは、SQL インジェクションの防止に役立ちます。

しかし、彼らがそれを不可能にしていると言うのは少し無理が​​あります。インジェクションは、クエリを作成するときにパラメーターと考慮事項を使用することで確実に阻止できます。

ただし、_very bad_クエリまたはストアド プロシージャは依然としてインジェクションの対象となる可能性があります。

たとえば、ストアド プロシージャまたはクエリで動的 SQL クエリを使用する場合があります。

CREATE STORED PROCEDURE [BadStoredProcedure]
   (@columnList varchar(MAX))
AS
BEGIN
   DECLARE @sqlCommand varchar(1000)       

   SET @sqlCommand = 'SELECT ' + @columnList + ' FROM Customers'

   EXEC (@sqlCommand)
END

*; TRUNCATE TABLE Customers; SELECT *が渡された場合に何が起こるかを推測します@columnList

于 2013-08-06T14:43:58.620 に答える