Transact-SQLのスキャンルール
Contrast Scanでは、Transact-SQLに対して以下のルールをサポートしています。
深刻度 | Contrastルール | エンジンルールID | 説明 |
---|---|---|---|
重大 | Command Injection | OPT.TRANSACTSQL.SEC.CommandInjection | CommandInjection:OSコマンドで使用する特殊要素の不適切な無害化(OSコマンドインジェクション) |
重大 | Sleep Injection | OPT.TRANSACTSQL.SEC.SleepInjection | SleepInjection:外部制御されたスリープ時間によるサービス拒否攻撃(DoS攻撃) |
重大 | SQL Injection | OPT.TRANSACTSQL.SEC.SqlInjection | SqlInjection:SQLコマンドで使用する特殊要素の不適切な無害化(SQLインジェクション) |
重大 | Avoid No Lock | OPT.TRANSACTSQL.AvoidNoLock | AvoidNoLock:NOLOCKテーブルヒントの回避 |
重大 | Use Proper Transaction Isolation Level | OPT.TRANSACTSQL.UseProperTransactionIsolationLevel | UseProperTransactionIsolationLevel:トランザクションの分離レベルの適切な使用 |
重大 | Too Broad Grant | OPT.TRANSACTSQL.SEC.TooBroadGrant | TooBroadGrant:広範すぎる権限付与 |
重大 | Weak Cryptographic Hash | OPT.TRANSACTSQL.SEC.WeakCryptographicHash | WeakCryptographicHash:脆弱な暗号化ハッシュのデータの完全性の欠如 |
重大 | Weak Symmetric Encryption Algorithm | OPT.TRANSACTSQL.SEC.WeakSymmetricEncryptionAlgorithm | WeakSymmetricEncryptionAlgorithm:脆弱な共通鍵暗号アルゴリズム |
高 | Avoid Email Hardcoded | OPT.TRANSACTSQL.AvoidEmailHardcoded | AvoidEmailHardcoded:ソースコード内におけるハードコードされたメールアドレス/コメントでのメールアドレスの回避 |
高 | Avoid IP Hardcoded | OPT.TRANSACTSQL.AvoidIPHardcoded | AvoidIPHardcoded:ソースコードにおけるIPアドレスの書き込み禁止 |
高 | Avoid Cross Joins | OPT.TRANSACTSQL.AvoidCrossJoins | AvoidCrossJoins:明示的または意図しないCROSS JOIN(デカルト積)の回避 |
高 | Avoid Delete Update Without Search Condition | OPT.TRANSACTSQL.AvoidDeleteUpdateWithoutSearchCondition | AvoidDeleteUpdateWithoutSearchCondition:検索条件の無いUPDATE / DELETEの使用禁止 |
高 | Close Deallocate Cursors | OPT.TRANSACTSQL.CloseDeallocateCursors | CloseDeallocateCursors:カーソルおよびカーソル変数を宣言した箇所と同じTransact-SQLのスコープ内でのカーソルのクローズ(または割り当て解除)とカーソル変数の割り当て解除 |
高 | Dead Variable Or Parameter | OPT.TRANSACTSQL.DeadVariableOrParameter | DeadVariableOrParameter:未使用のローカル変数およびプロシージャ/関数パラメータの検出 |
高 | Use Exists Instead Of In | OPT.TRANSACTSQL.UseExistsInsteadOfIn | UseExistsInsteadOfIn:不要なIN(サブクエリ)の使用の回避 |
高 | Use Order By With Top | OPT.TRANSACTSQL.UseOrderByWithTop | UseOrderByWithTop:TOP句のあるクエリでのORDER BY句またはGROUP BY句の使用 |
高 | Encrypt Information | OPT.TRANSACTSQL.EncryptInformation | EncryptInformation:列名における機密情報使用の禁止 |
高 | Insecure Randomness | OPT.TRANSACTSQL.SEC.InsecureRandomness | InsecureRandomness:安全でない標準的な擬似乱数生成器 |
情報 | Avoid Comparing With Null Constant | OPT.TRANSACTSQL.AvoidComparingWithNullConstant | AvoidComparingWithNullConstant:NULL定数との比較を回避してIS/IS NOT NULLを使用 |
情報 | Avoid Distinct | OPT.TRANSACTSQL.AvoidDistinct | AvoidDistinct:DISTINCTの回避 |
情報 | Avoid Large Composite Primary Keys | OPT.TRANSACTSQL.AvoidLargeCompositePrimaryKeys | AvoidLargeCompositePrimaryKeys:複合PRIMARY KEYにおける列数の制限 |
情報 | Avoid Large Text Binary Objects | OPT.TRANSACTSQL.AvoidLargeTextBinaryObjects | AvoidLargeTextBinaryObjects:データベース内でのバイナリや画像ファイル(バイナリラージオブジェクト)の格納禁止 |
情報 | Avoid Non Ansi Outer Join Syntax | OPT.TRANSACTSQL.AvoidNonAnsiOuterJoinSyntax | AvoidNonAnsiOuterJoinSyntax:非ANSI準拠の外部結合構文の使用回避( * [] {} ) |
情報 | Avoid Nullable Char | OPT.TRANSACTSQL.AvoidNullableChar | AvoidNullableChar:列がNULL不可の場合でのCHAR/NCHARデータ型の使用 |
情報 | Avoid Text Datatypes | OPT.TRANSACTSQL.AvoidTextDatatypes | AvoidTextDatatypes:大きなテキスト/バイナリデータ格納におけるTEXT、NTEXT、IMAGEデータ型の使用回避 |
情報 | Comment Tsql Code | OPT.TRANSACTSQL.CommentTsqlCode | CommentTsqlCode:TransactSQLの特定の要素に対するコメント |
情報 | Prefix Column Names With Table Name | OPT.TRANSACTSQL.PrefixColumnNamesWithTableName | PrefixColumnNamesWithTableName:複数のテーブルを参照する SQLステートメントにおける、列名へのテーブル名/エイリアスのプレフィックス(接頭辞)付与 |
情報 | Single Exit Point In Procedures | OPT.TRANSACTSQL.SingleExitPointInProcedures | SingleExitPointInProcedures:ストアドプロシージャ、関数、トリガーのコードにおける、単一の出口点(RETURN)の記述 |
情報 | Use Ansi Join | OPT.TRANSACTSQL.UseAnsiJoin | UseAnsiJoin:ANSI準拠の結合句の使用(古い形式の結合の回避) |
情報 | Use Set No Count On In Procedures | OPT.TRANSACTSQL.UseSetNoCountOnInProcedures | UseSetNoCountOnInProcedures:SQLバッチ、ストアドプロシージャ、およびトリガーの先頭におけるSET NOCOUNT ONの使用 |
情報 | Use Standard Names | OPT.TRANSACTSQL.UseStandardNames | UseStandardNames:データベースオブジェクトとT-SQLエンティティの名前に対する命名規則の遵守 |
低 | Avoid Cursors | OPT.TRANSACTSQL.AvoidCursors | AvoidCursors:サーバーサイドのカーソルをできるだけ回避すること |
低 | Avoid Expressions That Prevent Index | OPT.TRANSACTSQL.AvoidExpressionsThatPreventIndex | AvoidExpressionsThatPreventIndex:クエリ記述でインデックス検索を無効にする、列に対する式の回避 |
低 | Avoid Goto | OPT.TRANSACTSQL.AvoidGoto | AvoidGoto:GOTOの使用禁止 |
低 | Avoid Group By Without Aggregation Functions | OPT.TRANSACTSQL.AvoidGroupByWithoutAggregationFunctions | AvoidGroupByWithoutAggregationFunctions:集計関数なしの GROUP BY句の使用回避 |
低 | Avoid Recompile | OPT.TRANSACTSQL.AvoidRecompile | AvoidRecompile:SQLバッチまたはストアドプロシージャ/トリガーの再コンパイルを強制する操作の回避 |
低 | Avoid Reserved Words In Identifiers | OPT.TRANSACTSQL.AvoidReservedWordsInIdentifiers | AvoidReservedWordsInIdentifiers:識別子での予約語の使用禁止 |
低 | Avoid Select Count From Table | OPT.TRANSACTSQL.AvoidSelectCountFromTable | AvoidSelectCountFromTable:SELECT COUNTによるテーブル行数の取得の回避 |
低 | Avoid System Prefixes | OPT.TRANSACTSQL.AvoidSystemPrefixes | AvoidSystemPrefixes:ストアドプロシージャや関数のプレフィックス(接頭辞)としてのsp_ やfn_の使用禁止 |
低 | Explicit Column Names In Insert | OPT.TRANSACTSQL.ExplicitColumnNamesInInsert | ExplicitColumnNamesInInsert:INSERTステートメントにおける列名の特定 |
低 | Length With Varchar Types | OPT.TRANSACTSQL.LengthWithVarcharTypes | LengthWithVarcharTypes:文字データ型とバイナリデータ型による明示的な長さの指定 |
低 | Precision Scale With Decimal Numeric | OPT.TRANSACTSQL.PrecisionScaleWithDecimalNumeric | PrecisionScaleWithDecimalNumeric:DECIMAL型およびNUMERIC型における明示的な精度とスケールの指定 |
中 | Avoid Dynamic SQL | OPT.TRANSACTSQL.AvoidDynamicSql | AvoidDynamicSql:動的SQLステートメントをできるだけ回避すること |
中 | Avoid Deprecated Features | OPT.TRANSACTSQL.AvoidDeprecatedFeatures | AvoidDeprecatedFeatures:非推奨の機能の回避 |
中 | Avoid Exact Or Overlapping Indexes | OPT.TRANSACTSQL.AvoidExactOrOverlappingIndexes | AvoidExactOrOverlappingIndexes:同じ列または重複する列を持つインデックスの回避 |
中 | Avoid Like Patterns Table Scan | OPT.TRANSACTSQL.AvoidLikePatternsTableScan | AvoidLikePatternsTableScan:テーブル/インデックススキャンを強制し、インデックス使用を無効にするLIKE句のパターン回避 |
中 | Avoid Negative Operator | OPT.TRANSACTSQL.AvoidNegativeOperator | AvoidNegativeOperator:否定演算子( <> または ! {} )の使用回避 |
中 | Avoid Select Asterisk | OPT.TRANSACTSQL.AvoidSelectAsterisk | AvoidSelectAsterisk:SELECT句でのアスタリスク(*)の回避 |
中 | Avoid Too Many Joins | OPT.TRANSACTSQL.AvoidTooManyJoins | AvoidTooManyJoins:結合テーブルが多すぎるクエリの回避 |
中 | Avoid Trigger Return Data | OPT.TRANSACTSQL.AvoidTriggerReturnData | AvoidTriggerReturnData:トリガーにおける結果のリターンの回避 |
中 | Check Error After Data Manipulation | OPT.TRANSACTSQL.CheckErrorAfterDataManipulation | CheckErrorAfterDataManipulation:INSERT / UPDATE / DELETEの結果に対する、@@ERRORまたは@@ROWCOUNTの使用、あるいはTRY ... CATCHによる確認 |
中 | Prefer Union All Over Union | OPT.TRANSACTSQL.PreferUnionAllOverUnion | PreferUnionAllOverUnion: UNIONよりUNION ALLを優先 |
中 | Forbidden Call | OPT.TRANSACTSQL.SEC.ForbiddenCall | ForbiddenCall:危険なプロシージャ/関数の呼び出しの検出 |
中 | User Controlled SQL Primary Key | OPT.TRANSACTSQL.SEC.UserControlledSQLPrimaryKey | UserControlledSQLPrimaryKey:ユーザ制御の主キーのクエリ使用禁止 |