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 とストレージ
- 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。