われこわれこ

プログラムじゃあ~りませんか!

Security Development Lifecycleチェックボックスとは何か?

2015-05-10 14:51:43 | Visual Studio

Visual Studio 2013 C++でWizardに従ってプロジェクトを作ると、最初のあたりで

□Security Development Lifecycle

というチェックボックスが出てくる。今まで気にせずにチェックしていたのだが、意味を調べてみた。

結論としては、このチェックボックスをチェックすると以下のリストにある警告がエラー扱いになるようだ。

なので、チェックしておくほうが安心だろう。

https://msdn.microsoft.com/ja-jp/library/jj161081.aspx?f=255&MSPPError=-2147217396

/sdl (追加のセキュリティ チェックの有効化)

Visual Studio 2013
 

推奨される Security Development Lifecycle (SDL) のチェックを追加します。 これらのチェックには、エラーとしての追加のセキュリティ関連の警告、および追加の安全なコード生成機能が含まれます。

 
 
/sdl[-]
解説
 

/sdl を指定すると、/GS で提供されるベースライン セキュリティ チェックのスーパーセットが有効になり、/GS- がオーバーライドされます。 既定では、/sdlは無効になっています。 /sdl- を指定すると、追加のセキュリティ チェックが無効になります。

/sdl を指定すると、次の警告がエラーとして有効になります。

 

/sdl で有効になる警告

同等のコマンド ラインスイッチ

説明

C4146

/we4146

単項マイナス演算子が符号なしの型に適用され、符号なしの結果になります。

C4308

/we4308

負の整数定数が符号なしの型に変換されて、多くの場合は意味のない結果になります。

C4532

/we4532

continue break、または goto を __finally/finally ブロック内に使用すると、異常終了時、未定義の動作になります。

C4533

/we4533

変数の初期化コードが実行されません。

C4700

/we4700

初期化されていないローカル変数が使用されます。

C4703

/we4703

初期化されていない可能性のあるローカル ポインター変数が使用されます。

C4789

/we4789

特定の C ランタイム (CRT) 関数の使用時にバッファー オーバーランが発生します。

C4995

/we4995

deprecated プラグマでマークされた関数が使用されます。

C4996

/we4996

deprecated でマークされた関数が使用されます。

/sdl を有効にすると、実行時に次のチェックを実行するコードがコンパイラによって生成されます。

  • /GS の実行時バッファー オーバーラン検出の strict モードを有効にします。#pragma strict_gs_check(push, on) を使用したコンパイルと同等です。

  • 制限付きでポインターのサニタイズを行います。 逆参照がない式でも、ユーザー定義のデストラクターがない型でも、ポインターの参照は、delete の呼び出し後、無効なアドレスに設定されます。 これは、古いポインター参照の再使用を防止するために役立ちます。

  • クラス メンバーの初期化を実行します。 すべてのクラス メンバーをオブジェクトのインスタンス化時にゼロに自動的に初期化します (コンストラクターの実行前)。 これは、コンストラクターが明示的に初期化しないクラス メンバーに関連付けられた、初期化されていないデータの使用を防止するために役立ちます。

解説
 

詳細については、「Security Development Lifecycle Blog (Security Development Lifecycle に関するブログ)」を参照してください。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダーを選択します。

  3. [全般] ページで、[SDL チェック] ドロップダウン リストからオプションを選択します。


最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
aliprogrammer12@gmail.com (بازسازی ساختمان)
2018-06-05 03:05:03
it's helpful
返信する

コメントを投稿