IT用語の使い方を間違えたままでいると、成果物となるシステムもまた誤りの山となる。特にセキュリティー用語に関する誤解は、システムの脆弱性を生む温床になりかねない。用語そのものへの理解はもちろん、システム全体の知識が無ければ適切に使えないのがセキュリティー用語。技術的な背景を踏まえた上で、お互いに誤解の無い会話を心がけよう。
M氏:IT部門のマネジャー
P氏:IT部門のプログラマー
M氏:今作っているWebサイト、入力フォームがあるよね?入力にはサニタイジングを忘れないようにね。
P氏:入力値は通常のバリデーションですが、表示の際にすべての要素をエスケープしています。なので、気にされているような部分は対処済みと言えます。
M氏:エスケープ?サニタイジングと同じならそれでいいよ。
P氏:あと今回は新規のサイトなので、SQL文を動的に生成する部分をほぼ無くしてあります。実行ファイルの呼び出しもしていません。OSやWebサーバーなどの脆弱性を突かれない限り、おそらく大丈夫です。
M氏:…結局、サニタイジングはしているの?
M氏が気にしている「サニタイジング」とは、消毒を意味する英語だ。入力した文字列を消毒、つまり悪意のある入力を害の無い状態にして出力する指示を出している。ユーザーがどのような文字列を入力しようとも、システムの正常動作に影響を与えないのは当然だ。
入力された値をそのまま素直に出力(表示)してしまうと、セキュリティー上の脆弱性につながりかねない。データベースを外部から操作されたり、別のサイトにあるプログラムコードを実行されてしまったりする。
P氏は具体的な対策を挙げる一方で、「サニタイジング」を「した」とも「していない」とも言っていない。サニタイジングという言葉は、個々の対策とひもづかない曖昧な用語でしかないからだ。
そこで入力値の検証(バリデーション)や表示(出力)時のエスケープ処理、SQL文の動的生成と実行ファイル呼び出しの廃止と、P氏はM氏に具体的な対策を伝えることに終始している。