サニタイズとは
サニタイズとは、利用者が入力した脆弱性につながるような文字を一定の規則に従い別の表記に置き換え無害化することを指します。 英語ではもともと「消毒する」「無害化する」という意味があり、サニタイズの処理を行うことを「サニタイジング」と呼ぶこともあります。
なぜ必要?
Webアプリケーションでは、「&」や「<」「>」などの記号文字はソースコードとして意味を持つ文字列になります。
例えば、Webアプリケーションは「<script>」のような「<」「>」で囲われたタグを使い表現されております。
入力フォームに入力された記号文字がソースコードとして使用される状態となった場合例えば、掲示板やSNSの入力フォーム等から攻撃につながるコードを送信され、情報を抜き出すなどの脆弱性につながることがあります。これを防ぐための処理がサニタイズとなります。
Webアプリケーションを構築している言語やデータベースにより必要な記号文字は異なるため、それぞれでサニタイズにの処理を行う必要があり、セキュリティにおいて実施すべき対応と考えられます。
例えば 「<script>」のような形で入力され場合、「<script>」に変換することで、Webアプリケーションとしてソースコードとして使用される文字が、通常の文字として取る扱えるようになります。
クロスサイトスクリプティング
攻撃者はサニタイズが施されていないようなWebアプリケーションのフォームにhtmlタグやJavaScriptを埋め込み、不正なスクリプトを実行させることで悪意のあるサイトへの誘導、ログイン情報の漏えい等につながります。
対策としては、スクリプトで使用される記号文字「&」「<」「>」「”」「’」を通常の文字として解釈されるように無害化する処理(サニタイズ)を実施します。
SQLインジェクション
Webアプリケーションを操作する際に 想定外のSQL文を送信することで、データベースを不正に使用する攻撃手法です。
クロスサイトスクリプティングとは違いデータベースにアクセスできた場合個人情報の漏えいや重要情報の改ざんにつながります。
対策としては、「'」シングルクォーテーションなどのSQLとして使用される記号文字を、通常の文字として解釈されるように無害化する処理(サニタイズ)を実施します。
Discussion