Skip to main content

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:ユーザ制御の主キーのクエリ使用禁止