公開:2023.03.06 10:00 | 更新: 2023.03.05 11:42
今回は、Webアプリケーションのサニタイズの処理について紹介させて頂きます。
サニタイズとは、利用者が入力した脆弱性につながるような文字を一定の規則に従い別の表記に置き換え無害化することを指します。
英語ではもともと「消毒する」「無害化する」という意味があり、サニタイズの処理を行うことを「サニタイジング」と呼ぶこともあります。
Webアプリケーションでは、「&」や「<」「>」などの記号文字はソースコードとして意味を持つ文字列になります。
例えば、Webアプリケーションは「<script>
」のような「<」「>」で囲われたタグを使い表現されております。
入力フォームに入力された記号文字がソースコードとして使用される状態となった場合例えば、掲示板やSNSの入力フォーム等から攻撃につながるコードを送信され、情報を抜き出すなどの脆弱性につながることがあります。これを防ぐための処理がサニタイズとなります。
Webアプリケーションを構築している言語やデータベースにより必要な記号文字は異なるため、それぞれでサニタイズにの処理を行う必要があり、セキュリティにおいて実施すべき対応と考えられます。
例えば 「<script>
」のような形で入力され場合、「<script>
」に変換することで、Webアプリケーションとしてソースコードとして使用される文字が、通常の文字として取る扱えるようになります。
攻撃者はサニタイズが施されていないようなWebアプリケーションのフォームにhtmlタグやJavaScriptを埋め込み、不正なスクリプトを実行させることで悪意のあるサイトへの誘導、ログイン情報の漏えい等につながります。
対策としては、スクリプトで使用される記号文字「&」「<」「>」「”」「’」を通常の文字として解釈されるように無害化する処理(サニタイズ)を実施します。
Webアプリケーションを操作する際に 想定外のSQL文を送信することで、データベースを不正に使用する攻撃手法です。
クロスサイトスクリプティングとは違いデータベースにアクセスできた場合個人情報の漏えいや重要情報の改ざんにつながります。
対策としては、「'」シングルクォーテーションなどのSQLとして使用される記号文字を、通常の文字として解釈されるように無害化する処理(サニタイズ)を実施します。
簡単にではありますが、サニタイズについてご紹介しました。
脆弱性に対する対策として、ご紹介したものが全てではありませんが、自社でWebアプリケーションのセキュリティ対策を行う際の参考になれば幸いです。
注意点として、紹介した内容で対策される際は、Webページの動作に影響を与える可能性がありますので十分に動作確認を行ってください。
脆弱性は、日々新たに発見されています。
サイバー攻撃の被害者・加害者にならないためにも、定期的なセキュリティ診断を実施することをお勧めします。
参考サイト
IPA:安全なウェブサイトの作り方 - 1.5 クロスサイト・スクリプティング
IPA:SQLインジェクション対策について
e-Words: IT用語辞典
LOADING...