基本情報技術者試験 練習問題 17:セッションIDとCookie
Webアプリケーションのセッション管理について述べた文として、正しいものはどれか。
- セッションIDはサーバーが生成し、クライアントに送信される。Cookieはセッション識別子として機能する。
- セッションタイムアウトにより無効化されたセッションIDは、ユーザーが再度ログインする際に同じIDが再利用されるべきである。
- HttpOnlyフラグはJavaScriptからCookieへのアクセスを許可する設定である。
- SecureフラグはHTTPとHTTPS両方でCookieを送信することを意味する。
- SameSite属性はクロスサイトリクエストフォージェリ(CSRF)攻撃を防止するために使用される。
正解と解説を見る
正解:セッションIDはサーバーが生成し、クライアントに送信される。Cookieはセッション識別子として機能する。
Webアプリケーションのセッション管理はセキュリティにおいて最重要項目の一つです。
セッション管理の仕組み:
1. クライアント(ブラウザ)がサーバーにログイン要求
2. サーバーはセッションIDを生成
3. サーバーはセッションIDとユーザー情報をサーバー側に保存
4. サーバーはセッションIDをCookieでクライアントに送信
5. 以降、クライアントはリクエストごとにセッションIDを送信して認証
正しいのは「セッションIDはサーバーが生成し、クライアントに送信される。Cookieはセッション識別子として機能する」です。
セッションタイムアウト:
セッションIDが無効化されたら、新規ログイン時に「新しい別のセッションID」を生成すべきです。同じIDを再利用するとセッション固定化攻撃の危険があります。
Cookie属性:
HttpOnlyフラグ:JavaScriptからのアクセスを「ブロック」します。XSS(クロスサイトスクリプティング)対策。
Secureフラグ:HTTPSでの送信のみに限定します。HTTPでは送信されません。
SameSite属性:
- "Strict":同一サイトリクエストのみ
- "Lax":トップレベルナビゲーション(リンククリック)のみ許可
- "None":すべてのリクエストで送信(ただしSecureフラグが必須)
正しいのは「SameSite属性はクロスサイトリクエストフォージェリ(CSRF)攻撃を防止するために使用される」です。