関連記事
2022.03.21
2022.11.27
XSSとは? サイバー攻撃&対策
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
チャンネル登録お願いします!
XSSとは?
クロスサイトスクリプティングというのは、XSSと略して書かれることが多いですが、Webアプリケーションに対するサイバー攻撃手法の1つです。
簡単に言うと、Webアプリケーションの入力ボックスなどに不正なスクリプトコードを入力し、それを実行させることで、アプリに誤動作を行わせたり、個人情報などのデータを抜き取ったりする手法です。
Webアプリケーション側で対策がされていれば、そういった不正なコードは実行されずに無視されるのですが、対策が施されていない部分(つまり脆弱性)があると、XSS攻撃を受けてしまう危険性があるということですね。
ちなみに、Webアプリケーションに対するサイバー攻撃手法は他にも多くあり、CSRF(クロスサイト・リクエスト・フォージェリ)や、SQLインジェクションについては、こちらの記事で詳しく説明していますので併せて学習してみてください。
XSSの攻撃手法
では、XSSの具体的な攻撃方法を見てみましょう。
実際に実行させるスクリプトコードには色々なパターンがありますので、ここで紹介するのは一例になります。
なお、こういった攻撃を実際のWebサイトに対して行うのは犯罪行為になりますので、あくまで攻撃手法を知り、対策するための知識として学んでくださいね。
例えば、Webアプリケーションにこのような登録フォームがあったとします。
この「業務内容」という入力ボックスには、通常は文章が入力されるはずですが、悪意のあるユーザーはここにこのようなJavaScriptのコードを入力します。
<script>alert('Hello!')</script>
このスクリプトコードは「Hello!というアラートをポップアップで表示しろ」という命令なんですが
XSS対策が施されていないWebアプリにこのようなコードが登録されると、データを表示する際に、アプリはこのコードを実行してしまいます。
すると、このようにアラートが表示されます。
これは、Hello!と表示されるだけなので特に問題は無いですが、Hello!の部分をこのようにすると、ブラウザに保存されているCookie情報を表示させることも出来てしまいます。
<script>alert(document.cookie)</script>
Cookieには、サーバーのデータにアクセスするための「セッションID」というキー情報なども格納されているため、これを奪った後、「セッションハイジャック」という攻撃手法と組み合わせることで、その人になりすましてアプリを利用するといったことが出来てしまう危険性があります。
ちなみに、今紹介したやり方の場合は、あくまで自分自身のセッションIDを表示させているだけですが、「CSRF」という攻撃手法と組み合わせることで、ユーザーに不正なリンクをクリックさせてXSSを実行し、そのユーザーのセッションIDを奪うといったことが出来てしまいます。
不正なリンクをクリックしただけで、自分のアカウントでWebアプリが勝手に利用され、個人情報の流出や、投稿、削除などが行われてしまう危険性があるということですね。
このように、攻撃の対象は脆弱性のあるWebサイトではなく、そこに訪れたユーザーです。
対策するには?
Webアプリケーションを開発する側として、XSS対策を行うには、まずは「チェック処理」と「エスケープ処理」をしっかり施すことが大切です。
登録時にチェック処理(バリデーションと言います)を行うことで、不正なデータの登録を受け付けないようにすると共に、出力時にエスケープ処理を施すことで、万が一HTMLタグやJavaScriptコードなどが登録されたとしても、それらを出力する際に「ただの文字列」として扱われ、コードが実行されることはなくなります。
ユーザーが入力したデータを画面などに出力している箇所には、漏れなく対策しておくことが重要です。
他にも、対策方法は多くあり、出来るだけ対策しておくことで安全性は高まります。
IPAが発行している「安全なウェブサイトの作り方」という資料には、多くの対策方法が掲載されていますので、こちらも併せてチェックしてみてください。
なお、講座の方では、講座内で自分で作成した課題アプリに対して、実際に複数の攻撃手法を組み合わせて攻撃テストを行いながら、具体的な対策方法を学んでいきます。
安全性の高いWebアプリの開発スキルをしっかり学びたいという方は、是非カリキュラムをチェックしてみてください。
また、こういった攻撃手法があることを知り、普段からメールやSNS、掲示板などの、怪しいリンクはクリックしないように気を付けましょう。
まとめ
・XSSとは、Webアプリケーションに対するサイバー攻撃手法の1つ
・入力ボックスなどに不正なスクリプトコードを入力しアプリに誤動作を行わせたり、個人情報などのデータを抜き取ったりする手法
・チェック処理とエスケープ処理をしっかり施すこと
・他の攻撃手法への対策も総合的に行うこと