SDLとは、Security Development Lifecycleのことで、「セキュア(安全)な関数」の使用を強制する機能です。
例えばC言語では文字列を扱う関数がいくつかありますが、
これらの関数は文字列バッファに対して書き込みを行うため、操作先の文字バッファの「バッファオーバーラン」の可能性があります。
バッファオーバーランが起こると、システムが誤動作を起こしたり、悪意のあるプログラムが実行できてしまう状態になる可能性があります。
その対策として「セキュア関数」が用意されました。
「SDLチェック」をしておくと、セキュア関数の使用が強制できます。
(セキュアでない関数を使うとコンパイルエラーになります。)
SDLチェックの設定方法
1、ソリューションエクスプローラーのプロジェクト名を右クリック→プロパティ
2、構成プロパティ→C/C++→全般→「SDLチェック」を
「はい」にするとセキュア関数を強制します。
「いいえ」にするとセキュア関数を強制しません。
3、適用→OK
SDLチェックを「しない」にした場合、先ほどと同じプログラムでもコンパイルエラーは発生しません。
(セキュアでない関数を使用している旨の警告は出ます。)
古い参考書や記事ではセキュアな関数を使用していない場合も多いので、SDLチェックの設定方法は知っておいた方がよいでしょう。
また、設定が面倒な場合は、ソースファイルの先頭に以下の定義をすることでも警告やコンパイルエラーを抑制できます。
#define _CRT_SECURE_NO_WARNINGS
ただし、警告を出さなくしているだけで、バッファオーバーラン等の危険性があることは忘れないで下さい。
「セキュアでない関数」には、セキュアな代替関数が用意されていますので、本来であればそちらを使用した方がよいでしょう。
例:strcpy→strcpy_s、scanf→scanf_s