Web/ブラウザセキュリティ

ブラウザのオリジン境界とそれを巡る攻撃・防御。_moc-web-infra

同一生成元ポリシー(Same-Origin Policy)

罠ページからオリジナルページのJS実行を拒否する仕組み。iframe で他オリジンを埋め込んでも、その cookie や localStorage にはアクセスできない。

CORS(オリジン間リソース共有)

SOPの例外を明示的に許可する仕組み。

  • リクエストの Origin: に対しレスポンスの Access-Control-Allow-Origin: で許可オリジンを示す。
  • 単純リクエスト以外では事前に pre-flight request(OPTIONS)が飛ぶ。
  • SharedArrayBuffer は Spectre 対策で cross-origin isolation が必要: Cross-Origin-Embedder-Policy: require-corp + Cross-Origin-Opener-Policy: same-origin
  • Cookie 属性: http-only(JSアクセス不可)/secure(HTTPS時のみ送信)/sameSite(strict|lax|none で他サイトからの送信を制御)。傍受対策に secure、XSS対策に httpOnly
  • localStorage: 永続・サーバ非送信・JSから常時アクセス可 → XSSでセッションハイジャックされうる。
  • sessionStorage: タブが閉じるまで・最大5MB。
  • IndexedDB: File/Blob を含む大量データを保存、Web Worker からも可(Firebase Auth はここに認証状態を保存)。

主な攻撃

  • XSS: スクリプト注入。localStorage/Cookie のトークンを盗む。
  • CSRF(Cross-Site Request Forgery): 利用者に意図しないリクエストを送らせる。Cookie 自動送信が前提。sameSite やトークンで防ぐ。
  • プロトタイプ汚染攻撃: JS の prototype を書き換える。eval 利用は論外。
  • 二重POST: API処理中はボタンを非活性にするのが暫定対策。

TLS

Let’s Encrypt は TLS 証明書を無料発行する CA。

関連