セキュリティ対策について語ります!(XSS編)
Webアプリケーション開発において、避けては通れないのがセキュリティ対策。
TwitterやPSNが過去にサーバー攻撃を受けた話を聞いたことがある方も居られると思います。
今回はそのセキュリティに関する話を数回に分けて説明していきます!
なぜセキュリティは破られてしまうのか?
それは悪意を持った者たちは、Webサービスやソフトウェアの脆い所、つまり弱点を狙って、様々な方法で攻撃を仕掛けてくるからです。
そう言ったWebサービスやソフトウェアの問題点を「脆弱性(ぜいじゃくせい)」と呼びます。言い換えれば、この脆弱性を如何に解決するかによりセキュリティ強度が決まってくる訳です。
ここからはその脆弱性を狙った攻撃手段及びその対策方法について説明していきます。今回はその手口の一つ「XSS」に関する説明をいたします。
⑴XSSの定義
正式名称は(cross site scripting)と言います。直訳するならば、「Webサイト(site)を移動する(cross)チート行為(scripting)」と言った所でしょうか??
XSSとは、「悪意を持った者が脆弱性を持っているWebサイトに対して自身で自作したJavaScriptを埋め込む事による攻撃手段」のことです。
⑵XSSによる攻撃手段
この攻撃による具体的な流れは以下の通りになります。
1.WebサイトAの中で弱点部分(脆弱性)が見られるコンテンツBに対してJavaScriptを埋め込む
2.WebサイトAを利用しているユーザーがコンテンツBにアクセスした際に埋め込まれたJavaScriptが実行される。
3.JavaScriptが実行された際に、悪意を持った人が事前に作成していた「WebサイトAに見た目がそっくりな偽物のサイト」にスクリプト情報を持ったままのユーザーが誘導される。
4.ユーザーがそれに気づく事なく、その偽サイトで情報を入力する。その結果、ユーザーに対して悪意を持った人への情報漏洩など様々な被害が発生する。
引用元:サイバーセキュリティ.com様
文字だけでは分かりにくいと思いますので、上の引用図をお借りしました。
実際にこれの被害にあってしまった場合、「ユーザーの視点からは何も分からないまま」様々な情報が盗み取られてしまう訳ですね。被害は情報漏洩だけでなく、マルウェア感染など多岐に渡るため、本当に恐ろしい手口です。
⑶XSSに対する対策方法
ここではWEB製作者、管理者視点での対策に的を絞って説明致します。
XSSが発生してしまう主な原因に「騙されたユーザーがフォームから入力したHTML情報がそのままページに反映されてしまう事」が挙げられます。HTMLに原因があるのでしたら、そのHTMLを生成出来なくすれば良いという解決策があります。
ここでHTMLが生成出来なくなる状況を考えてみます。HTMLを作成している際には必ず必要となる文字が存在します。例えば「タグの始まりと終わりを表す記号<、>」などが当てはまりますね。
ではこれらの文字を使用不可能な状態にしてしまえばどうなるか?当然、HTMLの規則性が破られてHTMLを生成することが出来なくなります。
この仕様を利用した対策方法が「文字参照」という手法です。「<を& lt;に、>を& gt;に」といった具合にHTMLの構成に必要な文字列を強引に変換してしまう方式です。
確かにHTMLの生成そのものを無効化してしまえば問題を起こす事は難しくなります。この辺りはまるで「悪意を持ったクラッカーとセキュリティ研究者のいたちごっこ」と言った感じです。
⑷XSSによる過去の被害の事例
1.Youtubeにて偽情報が大量に拡散、コメント欄にも被害が
2.Twitterにおけるツイートが大量に拡散され続ける
我々にとって身近なサイトでも発生事例がある・・恐ろしいですね。
以上がXSS攻撃に対する説明でございます。しかし、Webサイトやソフトウェアの「脆弱性」を狙った手口は他にも存在します。次回の記事では、その一つの「SQLインジェクション」⬇️に関して説明いたします。