クロスサイトスクリプティング(XSS)のセキュリティ対策とは?

2019.09.08

Webセキュリティ

クロスサイトスクリプティング(XSS)のセキュリティ対策とは?対策はWAFで防御

クロスサイトスクリプティング(XSS)とはWebアプリケーションへのサイバー攻撃手法であり、また、代表的なサイバー攻撃のひとつです。そして、適切な対策を行うことで回避可能なサイバー攻撃です。

 

今回はクロスサイトスクリプティング(XSS)攻撃への対策方法について解説します。

 

目次

クロスサイトスクリプティング(XSS)攻撃とは

クロスサイトスクリプティング(XSS)攻撃とは、ユーザからの入力内容にHTMLタグを生成して画面上に表示する掲示板サイトやTwitterのようなWebアプリケーションで、Webアプリケーションの脆弱性(XSS脆弱性)を利用して悪意のあるデータを埋め込みスクリプトを実行させる攻撃手法です。

 

攻撃者は、入力フォームにスクリプト付のリンクを含む内容を入力してWebアプリケーションに罠を仕掛けます。掲示板サイトやTwitterなどのサービスへの訪問者がリンクをクリックしてスクリプトを実行すると、別のWebサイト(クロスサイト)に遷移して悪意のある内容(スクリプト)が実行されます。

 

その結果、悪意のあるウェブ画面が表示されたり、マルウェア感染などを引き起こします。例えば、心当たりのないポップアップ画面(Web画面)や入力フォームが表示されるような場合には注意が必要です。

 

これらは、個人情報などの重要な情報の入力を促したり、入力した内容を窃取するように作られており、ユーザーは個人情報の流出やマルウェア感染などの被害に遭う恐れがあります。

 

被害に遭わないためには、いつも利用しているWebアプリケーションであっても表示内容に注意し、安易にクリックや情報入力を行わないことが対策として挙げられますが、攻撃者側は巧みにクリックや、情報の入力に誘導するため、ユーザ側の注意だけで被害を避けることは困難です。

クロスサイトスクリプティング(XSS)が起こる原因

まず初めに、単純な作りの掲示板サイトを例に、基本的なWebアプリケーションの動作を説明します。

例となる掲示板サイトでは、Webアプリケーションの処理が以下のように行われます。

 

【基本的なWebアプリケーショの動作】

①投稿画面の入力フォームに投稿内容を入力し、「確認」ボタンをクリックする。

②投稿内容の確認画面が表示され、ユーザは問題ないことを確認して「投稿」ボタンをクリックする。

③投稿内容を登録する処理が実行され、登録が完了すると、投稿完了画面が表示されて投稿内容が反映される。

 

次に、攻撃者が悪意ある投稿内容を入力するとどうなるでしょうか?

 

例として挙げたWebアプリケーションは入力内容をそのまま受け付けており、攻撃者はどのような文字列でも入力することが可能です。

 

そのため、攻撃者は入力フォームにブラウザ上で実行可能なコマンドを含む文字列を入力して罠となる画面内容を生成することができます。この画面内容はHTMLで構成されるドキュメントと、HTMLに埋め込む形式のスクリプトでJavaScriptが一般的です。

 

例えば、攻撃者は罠となる内容をHTMLドキュメントとして掲示板サイトに入力して以下のような画面を表示させることが可能です。

「はい」「いいえ」ボタンには【スクリプト1】が埋め込まれており、攻撃者によって予め用意された偽のWebアプリケーションへ誘導します。

 

偽のWebアプリケーションの表示画面では攻撃内容を含む【スクリプト2】が埋め込まれているため、ボタンをクリックすると、ユーザは入力内容を窃取されるなどの被害に遭います。

 

以上のことから、Webアプリケーションでクロスサイトスクリプティング(XSS)が起きる原因として次の2点が挙げられます。

 

①入力フォームにhtmlタグやJavaScriptなどのスクリプトが入力された場合、内容をそのまま受け付けてしまう

②Webアプリケーションが入力値を制限していない

 

では、これらに対して、どのような対策を講じればよいのでしょうか。

クロスサイトスクリプティング(XSS)対策①サニタイジング(スクリプトの無害化)

クロスサイトスクリプティング(XSS)攻撃への対策方法の一つ目はサニタイジングです。

クロスサイトスクリプティング(XSS)攻撃は、Webアプリケーションのフォームに実行可能な文字列を挿入し、Webアプリケーションの利用者の環境で悪意のある操作を実行する攻撃です。

 

これらの文字列を実行させないようにサニタイジング(スクリプトの無害化)対策を行います。

 

例えば<script>〜</script>という文字列を含む内容がWebアプリケーションに埋め込まれるように投稿された場合、投稿内容として表示されているボタンやリンクなどをクリックするとJavaScriptなどのスクリプトが実行されます。スクリプトの構成に必要な&,<,>,”,’の5文字の特殊文字に着目し、これらが文字列としてそのまま画面に表示されるように置換(エスケープ)します。このように置換を行うことで、スクリプトが入力された場合でも、Webアプリケーションの画面にはスクリプトのソースが表示され、攻撃者が意図する内容では表示されません。

 

サニタイジング(スクリプトの無害化)はクロスサイトスクリプティング(XSS)攻撃への有効な対策であり、また、根本的な解決策でもあります。

クロスサイトスクリプティング(XSS)対策②入力値を制限する

クロスサイトスクリプティング(XSS)の対策方法の二つ目は入力値の制限です。

 

例えば郵便番号の入力では、数字以外の入力を許可しないことで、スクリプトの挿入ができなくなります。

 

また、文字種の制限ができない場合でも、入力値の長さに制限を設けることで、攻撃が可能となるスクリプトの挿入をある程度抑制することが可能です。

クロスサイトスクリプティング(XSS)対策はさらにWAFで防御

これら二つの対策はともにWebアプリケーション作成の段階で行います。

 

しかし、細心の注意を払って作成されたWebアプリケーションであっても、クロスサイトスクリプティング攻撃への対策に漏れが生じる場合はあります。

 

WAFはクロスサイトスクリプティング攻撃の防御に有効なので、万が一の場合に備えて導入すれば、より一層強固な対策となります。

 

万が一Webアプリケーションの入力内容にチェックの漏れがあり、クロスサイトスクリプティング攻撃が可能となるようなことがあったとしても、WAFを導入していれば攻撃を防御することが可能です。

なぜなら、WAFはユーザが送信するリクエスト内容を監視しているからです。

 

これらの対策を単独で行ったとしても、クロスサイトスクリプティング攻撃を完全に回避することはできません。単独ではなく全ての対策を導入することで多面的な防御を行い、Webアプリケーションの安全性をより高めることが重要です。

クロスサイトスクリプティング(XSS)対策ならクラウド型WAFがおすすめ

Webアプリケーション層の保護に有効なWAFは、Webサービスには不可欠なセキュリティ対策システムです。クラウド型WAFであれば、導入、運用面でコストや手間を抑えたセキュリティ対策を行うことができます。クラウド型のWAFは導入ハードルが極めて低く、これからWebセキュリティ対策を行う企業様には有力な選択肢となります。WAFを選定する際には、サポート体制を重視して、自社に最適なものを選びましょう。

 

クラウド型WAF「攻撃遮断くん」は、最新の攻撃パターンにも自動的に対応していくため、セキュリティパッチをすぐに適用できない状況や、定期的に脆弱性診断が出来ない状況でも、セキュアな環境を保てます。ぜひこの機会にWebセキュリティ対策を見直し、WAFの導入を検討してみてください。

 

「攻撃遮断くん」の詳細資料は、こちらからダウンロード頂けます。


https://www.shadan-kun.com/
クロスサイトスクリプティング(XSS)対策 クラウド型WAF 攻撃遮断くん Web Application Firewall
(2017/12/5 執筆、2021/4/6修正・加筆)

  • 御社のセキュリティ対策は本当に大丈夫ですか?約80%の企業が対策不足と言われています。Webセキュリティをいますぐ確認!3つのチェックポイント。今すぐ無料で資料ダウンロード
  • 累計12,000サイトの導入実績 多数の事例から、導入までの経緯と抱えていた課題の解決方法をご紹介

この記事と一緒に読まれています