0

私はPDW AU5で働いています。動的 SQL を必要とするストアド プロシージャを作成しています (データベース名が可変であるため)。そのため、SQL インジェクションを防ぐために、ストアド プロシージャへの入力パラメーター値の簡単なテストを行っています。テストが失敗した場合は、ストアド プロシージャを終了します。通常、SMP では、これを RETURN -1 で行います。ただし、PDW のストアド プロシージャでは RETURN は許可されていません。どうすればこれを回避できますか?

4

2 に答える 2

0

QUOTENAME 関数を使用して、入力文字列の一重引用符をエスケープし、動的 ​​SQL が挿入されないようにすることができます。

DECLARE @userfield VARCHAR(255) = 'abc'' ;SELECT 1; '
DECLARE @sql NVARCHAR(4000)

SET @sql = 'SELECT ' + QUOTENAME(@UserField, '''')

PRINT @sql

EXEC (@sql)

SQL インジェクションを防ぐ方法に関する別の投稿を参照してください SQL インジェクションを防ぐ方法

于 2016-05-19T03:49:50.500 に答える