サニタイジング 【sanitizing】 サニタイズ / sanitize / サニタイゼーション / sanitization

概要

サニタイジング(sanitizing)とは、利用者が入力した文字データを受け取る際に、プログラムにとって特別な意味を持つ可能性のある文字や文字列を検知して、一定の規則に従って別の表記に置き換えること。「無害化」とも呼ばれ、攻撃者が入力データ中にコード断片などを混入させて誤作動を誘発する攻撃などを防ぐために行われる。

Webアプリケーションのセキュリティ対策としてよく用いられる手法で、HTMLタグJavaScriptSQL文やそれらが使用する区切り記号などを検出して、同じ意味の別の表記に書き換えるエスケープ処理を行ったり、難しい場合は削除する。

例えば、閲覧者が投稿した内容を表示する電子掲示板BBS)のようなシステムを開発する際に、入力された文字列をそのまま他の閲覧者に表示する仕様にすると、悪意のある閲覧者がHTMLscriptタグなどで有害な動作をするスクリプトを書き入れ、それが他の閲覧者のWebブラウザに送られて実行されてしまう。

このような事態を防ぐため、入力文字列をチェックして、HTMLタグとして解釈される角括弧「<」「>」など、システムにとって特殊な意味を持つ文字や記号をHTML実体参照表記に改めるといった置き換え処理を行う。

システムの種類や構成によって脅威となり得る表記や文字は異なるため、どのようなサニタイジング処理を行うかも異なってくる。データベースと連動したシステムでは、SQLインジェクションを防ぐためにSQL文中で意味のある引用符や条件式などを警戒すべきであるし、特定のプログラミング言語やスクリプト言語における表記や、OSコマンドシェルスクリプトなどに気をつけるべきシステムもある。

なお、サニタイジングされて入力されたデータをプログラムで処理する際にエスケープ処理が解除されてしまう場合などもありえるため、データの無害化をサニタイジングのみに頼るのは危険とされ、Webページなどの場合は出力直前に一律に外部に由来するデータのエスケープなどを行うべきであるとされる。

(2018.7.23更新)

他の辞典による解説 (外部サイト)

試験出題履歴

ITパスポート試験 : 平28春 問64
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。