WEBシステム開発に際して、セキュリティ対策は非常に重要な問題です。
良く取り上げられる攻撃手法に、XSS(クロスサイトスクリプティング)、SQLインジェクション、CSRF(クロスサイトリクエストフォージェリ)などがあります。
今回はその中でもXSS(クロスサイトスクリプティング)について取り上げます。
目次
【システム開発】より高度なWEBサイト構築に!WEBシステム開発に際してのセキュリティ対策について[1]XSS(クロスサイトスクリプティング)とは?
XSS(クロスサイトスクリプティング)は、WEBアプリケーションに存在するセキュリティ上の脆弱性の一つで、攻撃者が悪意のあるスクリプトを不正に埋め込み、それがユーザのブラウザ上で実行されることによって被害をもたらすものです。
この攻撃はユーザが信頼しているWEBサイトやアプリケーション内で行われるため、攻撃対象となるユーザのブラウザでは、攻撃者の意図通りに悪意のあるスクリプトが実行されてしまい、被害が発生します。
XSS攻撃の種類
XSS攻撃には主に3つの種類があります。
1. 反射型(Non-Persistent)XSS
反射型XSSは、攻撃者が実在するメールやサイトを装った偽のメールや偽のサイトを用意し、そこ記載されている不正なスクリプトを含んだリンクをユーザがクリックすることから始まります。
WEBシステムに脆弱性があると、ユーザのブラウザ上で不正なスクリプトが実行されます。
それにより、マルウエアに感染させたり情報を詐取されるなどの被害が生じます。
この流れから、クリック(リクエスト)したものに対して不正なスクリプトが返されるため、「反射型」と呼ばれています。
2. 永続型(Persistent / Stored)XSS
永続型XXSは、攻撃者がWEBアプリケーションのデータベースに悪意のあるスクリプトを保存することから始まります。
WEBシステムの脆弱性を突いて不正なスクリプトを直接保存することで、ユーザがWEBシステムにアクセスした際に不正なスクリプトが実行されます。
それにより、マルウエアに感染させたり情報を詐取されるなどの被害が生じます。
反射型XSSと異なり、アクセスのたびに保存された不正なスクリプトが永続的に実行されるため「永続型」と呼ばれています。
3. DOMベース(DOM-based)XSS
DOMベースXSSは、主にWEBサイト/WEBシステムで利用しているJavaScriptのコード上の脆弱性を突いて、JavaScriptコードによって動的に生成されるデータを改ざんし、ユーザのブラウザ上で不正なスクリプトを実行させるものです。
動的に生成されるHTMLやDOMを利用した攻撃のため、「DOMベース」と呼ばれています。
XSS対策のための開発手法
XSS攻撃からWEBシステムを保護するための手法として、入力検証、エスケープ処理、Content Security Policy(CSP)の導入などがあります。対策の概要をいくつかご紹介いたします。
入力値の検証
フォームに入力された値が常に信頼性があるものであるかどうかを検証します。
不正な入力をブロックしたり、エラー処理を行ったりして、不正なデータのサーバーへの保存を防ぎます。
エスケープ処理
出力する前にすべてのユーザー入力をエスケープすることで、HTMLやJavaScriptとして解釈されるのを防ぎます。HTMLエスケープ関数(例: htmlspecialchars())を使って、ユーザー入力を安全に表示します。
HTTPOnlyフラグとSecure属性の活用
クッキーにHTTPOnlyフラグとSecure属性を付与することで、JavaScriptからクッキーにアクセスできなくなり、XSS攻撃によるセッションハイジャックを防ぎます。
Content Security Policy(CSP)の導入
Content Security Policy(CSP)を使用すると、許可されたリソースの制限や、外部ドメインからのスクリプト実行の制御が可能になり、不正なスクリプトの実行を防止します。
入力フィルタリング
ユーザの入力に対してフィルタを適用し、悪意のあるスクリプトが含まれる可能性のある文字列を削除または無効化します。
入力フィルタリングは単純な文字列比較ではなく、ホワイトリストベースの安全なフィルタリングが推奨されます。
セッション管理の強化
セッションIDのトークン化や、不要なセッション変数の削除など、セッション管理のセキュリティを強化します。
最新のセキュリティアップデートの適用
使用しているフレームワークやライブラリのセキュリティアップデートを定期的に確認し、適用することが重要です。
まとめ
WEBシステムの開発に際して適切な対策を講じることで、多くの場合、XSS攻撃を防ぐことができます。
ただ、攻撃手法は日々進化し、新たな脆弱性も発見されるため、セキュリティ意識の向上と定期的なセキュリティ対策状況の確認と実施が、ユーザとWEBシステムの安全性を保つために重要です。
システム開発もアプライドにお任せください!
アプライドでは今回ご紹介しました他にも様々なWEBシステムを開発させていただいております。
特に大学関連のお客様より、
・学術集会の参加申込、講演申込、演題投稿
・オンライン集会の会場サイト
・学会サイトの会員管理
・スタッフ紹介や業績紹介などの情報の表示絞り込み検索
・機器、設備の利用予約
など、様々なシステムを開発させていただきました実績がございます。
WEBサイトにて実現したい機能がある方はぜひ一度ご相談ください。