主にXSS(クロスサイトスクリプティング)対策として知られるサニタイジングの必要性と、実践方法を解説します。企業のセキュリティー担当の方は、なぜサニタイジングが必要といわれているのか、基本的な仕組みとともに理解しておきましょう。
サニタイジングの基本
サニタイジングとは、問い合わせフォームなどに訪問者が入力した文字データについて、特別な意味を持つ文字列を無害化する処理を指します。
人によっては聞き慣れない言葉かもしれませんが、セキュリティーの観点から非常に重要な処理として知られています。
悪意のあるプログラムを無害化
入力された文字列の中で、特別な意味のある文字や記号を、別の文字列に置き換えるなどして無害化するのがサニタイジングです。
文字列の中には、角括弧をはじめとして、HTMLにおいて特別な意味を有するものがあります。サニタイジングをしなければ、問い合わせフォームなどにユーザーが意図的に特定の文字列を入力し、動作を制御できてしまう場合があるのです。
そうなると、システムにセキュリティー上の深刻な問題が生じてしまうでしょう。
そこで、システムを操作する悪意のあるプログラムの表記を防ぐため、特定の文字列を別の表記にするなどの処理が行われるわけです。ユーザーが文字列を入力するWebページでは、必ずサニタイジングが実行されるようになっています。
エスケープ処理とは?
サニタイジングは「エスケープ処理」と呼ばれることもあります。まったく同じ意味で使われる場合も少なくありませんが、厳密にはサニタイジングの一種がエスケープと呼ばれており、特別な意味を有する記号を別のものに変換する処理を指します。
エスケープ処理によって特定の文字列を変換し、Webサイトにとって有害な文字列を「無害化」する行為がサニタイジングと覚えておくとよいでしょう。
なお、入力された文字列を削除して無害化することも可能です。文字列の変換も削除も、Webサイトにとって有害な文字列を無害化することに変わりはないため、どちらもサニタイジングの一種と位置付けられます。
サニタイジングが必要な理由
Webサイトにとって、サニタイジングはセキュリティーの観点から不可欠な処理といえます。
ユーザーが入力した文字列を正しく認識できない事態を回避する意味もありますが、それ以上にサニタイジングはWebサイトのぜい弱性を利用した攻撃の対策として有効です。
XSS(クロスサイトスクリプティング)対策
悪意のある者がターゲットにしたWebサイトに対して、不正なスクリプトを仕掛けることで動作を制御し、個人情報などを盗み出す攻撃が増えています。
サニタイジングの施されていないWebページは、ぜい弱性を突いた攻撃の的となってしまうので注意が必要です。
サニタイジングはWebサイトのぜい弱性を利用した攻撃の中でも、特にXSS(クロスサイトスクリプティング)と呼ばれる攻撃の対策として有効とされています。
個人情報を詐取されたり、フィッシング詐欺に遭ったりしないためにも、問い合わせフォームを設置する場合は、必ずサニタイジングをするようにしましょう。
XSSとは?
XSS(クロスサイトスクリプティング)とは、JavaScriptの不正プログラムによって、ターゲットのページの情報を流出させるサイバー攻撃です。対象となるWebページのぜい弱性を利用した攻撃であり、近年国内外で被害が増えているようです。
インターネットの掲示板やSNSなどの入力フォームに不正なプログラムが仕掛けられる場合が多いですが、ターゲットの問い合わせフォームでプログラムを実行させ、情報を抜き出したりマルウェアに感染させたりするケースもあります。
サニタイジングを怠るとどうなる?
入力フォームをはじめとした動的なサイトでサニタイジングを怠っていると、XSSによって特定のWebサイトのログイン情報を詐取されたり、Webページに嘘の情報を勝手に表示させられたりする被害に遭う可能性が出てきます。
さらに、訪問者が強制的に別のWebページに飛ばされるなどの不正な操作がされる場合もあるので、企業の信用問題にもなりかねません。XSSの被害を防ぐためにも、動的なサイトでは必ずサニタイジングがされるようにしておきましょう。
サニタイジングの方法
それでは、サニタイジングの方法を確認しておきましょう。サニタイジングはHTMLにおける特殊な文字列を別な文字列に置き換えたり、削除したりして無害化する処理です。主な方法としては、JavaScriptやPHPの関数を用意する方法があります。
JavaScriptの関数を活用する
JavaScriptで任意の文字列を置き換える関数を設定することで、サニタイジングが可能です。例えば「<」や「>」などを別の文字列に変換する関数を定義すれば、これらの文字が入力された際に、HTMLで意味を持たない文字列に置き換えられます。
独自の関数を定義するので難しく感じられるかもしれませんが、日頃からJavaScriptに慣れ親しんでいる人ならば、簡単に設定ができるでしょう。
PHPの関数を活用する
PHPでは「htmlspecialchars関数」を利用することで、簡単にサニタイズを実現できます。JavaScriptの場合とは違い、独自の関数定義は不要です。
「<」や「>」といった文字列の置き換えはもちろん、「シングルクオート」や「ダブルクオート」のサニタイジング処理も実現できます。こちらも日頃からPHPを使い慣れている人にとっては、問題なく設定ができるでしょう。
サニタイジングを実施してセキュリティー対策を
サニタイジングの概要と目的を解説しました。サニタイジングはテキストデータ上の特殊文字を無効化することを指し、主にエスケープ処理によって文字列を置き換える処理が該当します。
主にWebページのXSS(クロスサイトスクリプティング)の対策として有効です。
サニタイジングを怠っていると、悪意のある者によって情報を盗み取られたり、処理を乗っ取られたりする危険があるので注意しましょう。動的なWebページを運用するならば、必ずサニタイジングが実行されるようにしておく必要があります。
ノーコードツール選びは「ミツモア」を活用しよう
自社の課題解決のためにノーコードツールの導入を検討している方はぜひ「ミツモア」を活用してみてくださいね。