サニタイズとは何か?クロスサイトスクリプティングを防ぐ方法

2021年4月19日

サニタイズの概要

サニタイズは主にWeb上で行う処理のことで、サイバー攻撃につながるような文字を無効化することを指します。
英語ではもともと「消毒する」「無害化する」という意味があり、特別な文字を一般的な文字列に変換することで、脅威や危険性を取り除くのがサニタイズの役割です。
このサニタイズの処理を行うことを「サニタイジング」と呼ぶこともあります。

サニタイズは何故必要なのか?

Webサイトでは、「&」や「<」「>」などの特殊文字はソースコードとして意味を持つ文字列になります。
例えば、Webサイトは「<html>」のような「<」「>」で囲われたタグを使って構築されています。

これら特殊文字がコードとしての意味を持ってしまうと、ユーザーが入力フォームから攻撃につながるコードを送信できてしまうことがあります。

この行為により情報を抜き出したり、Webサイトを破壊したりする行為につながることがあります。
これを防ぐための処理がサニタイズです。

サニタイズの導入方法

開発者や運営者は、あらかじめサニタイズによって置き換える特殊文字を設定しておきます。
これにより、悪意のあるコードを入力されてもただの文字列として処理することが可能です。
サニタイズはWebシステムのセキュリティにおいて必須の処理と言えます。
特に「クロスサイトスクリプティング」や「SQLインジェクション」などの攻撃を防ぐのに重要です。

Webサイトを構築している言語やデータベースによってサニタイズに必要な特殊文字は異なるため、それぞれの分野ごとに考慮する必要があります。
例えば上述の通り、Webサイトは「<」「>」という記号を使ったタグで構成されています。
そのため、入力フォームにタグを入力でき、それが実行されてしまうと、サイバー攻撃につながってしまいます。
この対策として、「<や>が入力された場合はスペースに変換する」などの設定でプログラミングを行います。
こうした対策により、入力された記号が無効化され、もしハッカーが悪意のあるコードを実行しようとしても、プログラミングコードとして認識されず、攻撃を防ぐことができます。
しかしサイバー攻撃によっては、サニタイズそのものが解除されてしまうということも考えられます。
そのため、Webサイトのセキュリティを考える場合は、サニタイズだけでなく、その他のセキュリティ面も強化することが重要です。

サニタイズで防げる主なサイバー攻撃

ここからはサニタイズで防ぐことができる主なサイバー攻撃を紹介していきます。

クロスサイトスクリプティング

クロスサイトスクリプティングはサイバー攻撃の手法の1つです。
攻撃者はサニタイズが施されていないようなWebサイトの脆弱なポイントに悪意のあるコードを送信します。
この攻撃が成功すると、Webサイトを訪問したユーザーは、偽物のサイトに誘導されたり、ファイル破損をもたらすスクリプトを一方的に実行されたりしてしまうなどの被害に遭うことがあります。
偽物のサイトでログイン情報を使用したため、攻撃者にログイン情報を不正利用されてしまったという事例も存在します。

SQLインジェクション

SQLインジェクションは想定外のSQL文を送信することで、データベースを不正に使用する攻撃手法です。
クロスサイトスクリプティングとは違い、データベースを攻撃するのが主になります。
データを取り出すようなコードが実行されてしまえば、個人情報の漏洩などにつながります。
また、情報を取り出せなくても、そのデータベースを破壊してしまうようなコードが送られてしまえば、Webサイトが利用できなくなることもあります。