Open3

[読書メモ]徳丸本

ともとも

3章Webセキュリティの基礎

3.1 HTTPとセッション管理

  • hiddenパラメータはクライアント側での書き換え可能だけど、情報漏洩や第三者による書き換えには堅牢
    • 利用者自身によっても書き換えられても困る情報(認証・認可など)はセッションを利用すべきだが、それ以外はまずhiddenで保持することを検討する
  • セッションIDに求められる要件
    • 第三者が推測できないこと
    • 第三者に強制されないこと
      • セッションIDの固定化攻撃
    • 第三者に漏洩しないこと
ともとも

3.2 受動的攻撃と同一オリジンポリシー

  • 同一オリジンポリシー
    JavaScriptなどのクライアントスクリプトからサイトをまたがった(クロスオリジン)アクセスを禁止するセキュリティ上の制限。ブラウザに搭載されている制限の一つ。
ともとも

3.3 CORS

  • クロスオリジンリソース共有(CORS)
    同一オリジンポリシーの制限を回避しつつ異なるオリジンとのデータ交換を可能にする仕組み。

基本的な設定

サーバー側で以下のHTTPレスポンスヘッダを追加し、クロスオリジンからのリクエストを許可する。

  • Access-Control-Arrow-Origin
  • Access-Control-Arrow-Methods
  • Access-Control-Arrow-Headers

認証情報を含める場合

デフォルトでは、クロスオリジンに対するリクエストにはクッキーなど認証に用いるリクエストヘッダは含まれない。そのため、リクエストに認証情報を含めたい場合、クライアントとサーバー側それぞれに追加の設定を行う

  • クライアント側:withCredentials: true
    クロスオリジンに認証情報を付与する。デフォルトはfalse
  • サーバー側:Access-Control-Arrow-Credentials: true
    認証情報を含んだリクエストを許可する