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

0

2025年02月24日 9:18

1. はじめに

Webアプリケーションを開発する上で避けて通れないセキュリティ問題のひとつに「クロスサイトスクリプティング(XSS)」があります。XSSの攻撃を受けると、

  • ユーザーの個人情報が盗まれる
  • セッションハイジャックが発生する
  • ユーザーが悪意のあるスクリプトを実行させられる

などのリスクがあります。

本記事では、XSSの基本概念、攻撃の仕組み、Node.jsにおける具体的な事例、およびその対策について解説します。

2. XSSの種類

XSSには大きく分けて3種類の攻撃パターンがあります。

2.1 反射型XSS(Reflected XSS)

攻撃者が用意した特定のURLをユーザーが踏むことで、URLパラメータなどを介して悪意のあるスクリプトが実行されます。

2.2 持続型XSS(Stored XSS)

攻撃スクリプトがデータベースに保存され、閲覧したユーザーに対して継続的に攻撃が行われるタイプです。

2.3 DOMベースXSS

JavaScriptを直接操作することで、ユーザーのブラウザ上で意図しないスクリプトを実行させる攻撃手法です。

3. Node.jsを使用したXSSの具体例

3.1 危険なコード例

以下のコードは、Node.js + Expressを使った簡単なアプリケーションの例です。このコードはXSS攻撃に対して脆弱です。

img

このコードは、http://localhost:3000/?name=<script>alert('XSS!')</script> のようなURLを入力すると、ブラウザ上でアラートが表示されます。

3.2 修正方法

XSS対策として、以下の対策を施す必要があります。

エスケープ処理の導入

ユーザーの入力を直接HTMLに埋め込むのではなく、適切にエスケープ処理を行います。

img

3.3 CSP(Content Security Policy)の導入

CSPを導入することで、スクリプトの実行を制限できます。

img

4. まとめ

XSS攻撃は非常に危険であり、特にユーザー入力を扱う場面では注意が必要です。対策としては、

  • HTMLエスケープ
  • CSPの導入
  • 入力のサニタイズ

を実施することで、リスクを最小限に抑えることが可能です。

XSSをしっかり理解し、安全なWebアプリケーションを開発しましょう!

[cv:issue_marketplace]

# セキュリティ
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。