サニタイジング【sanitizing】サニタイズ

別名  :sanitize/サニタイゼーション/sanitization

概要

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

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

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

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

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

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

(2018.7.23更新)

他の用語辞典による「サニタイジング」の解説 (外部サイト)

資格試験などの「サニタイジング」の出題履歴

▼ ITパスポート試験
平28春 問64】 SQLインジェクションの対策などで用いられ、処理の誤動作を招かないように、利用者がWebサイトに入力した内容に含まれる有害な文字列を無害な文字列に置き換えることを何と呼ぶか。