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
認証情報を含んだリクエストを許可する