ユーザーアイコン

mizuko

3日前

0
0

REST APIサーバーにおけるCSPヘッダーの設定と運用

セキュリティ
REST API

REST APIサーバーでは、最も制限的なCSP設定が推奨される。

基本設定:

Content-Security-Policy: "default-src 'none'; frame-ancestors 'none';"

各ディレクティブの意味:

  • default-src 'none': すべてのリソース読み込みをブロック(スクリプト、スタイル、画像など)
  • frame-ancestors 'none': iframe埋め込みを完全に禁止(クリックジャッキング対策)

この設定が適切な理由:

  • APIサーバーはJSONのみを返すため、HTMLリソースの読み込みは不要
  • ブラウザが誤ってHTMLとして解釈してもXSS攻撃を完全に防御
  • データインジェクション攻撃を防止

拡張が必要なケース:

  1. 画像配信: img-src 'self'を追加
  2. WebSocket使用: connect-src 'self' wss:を追加
  3. 外部API連携: connect-srcに対象URLを追加

運用上の注意点:

  • CORS設定と混同しない(APIアクセス制御はCORSで行う)
  • CSPはブラウザがレスポンスをHTMLとして解釈した場合のみ有効
  • パフォーマンスへの影響はほぼなし(ヘッダー追加のみ)

CSP違反の監視が必要な場合はreport-uriディレクティブでレポート先を指定可能。