Web技術の基礎

ロードバランサの後ろに3台のアプリケーションサーバを置き、リクエストを順番に各サーバへ振り分けている(ラウンドロビン)。ログインした利用者のセッションの情報は、ログインを処理したサーバのメモリだけに保存している。起こりやすい問題と対策の組み合わせとして、適切なものはどれか。

  1. Aほかのサーバに振り分けられるとセッションが見つからず、ログインが切れたように見える。セッションを全サーバが使える共有の場所に置く
  2. B3台のサーバが同じセッションIDを別々に発行して衝突する。セッションIDを短い連番にして、利用者がIDを覚えやすいようにする
  3. CロードバランサはCookieを読めないので、HTTPSが使えなくなる。ロードバランサとサーバの間の通信を暗号化しないようにする
答えと解説を見る

正解:A. ほかのサーバに振り分けられるとセッションが見つからず、ログインが切れたように見える。セッションを全サーバが使える共有の場所に置く

セッションの情報が1台のサーバのメモリにしかないと、次のリクエストが別のサーバに振り分けられたとき、そのサーバは利用者を見分けられません。対策の1つは、セッションを、どのサーバからも読み書きできる共有の記憶場所(インメモリのデータストアやデータベース)に置くことです。もう1つは、同じ利用者のリクエストを同じサーバに振り分け続けるセッション維持(スティッキーセッション)ですが、そのサーバが止まるとセッションが失われ、負荷も偏りやすくなります。サーバが状態を持たないようにしておくと、台数を増やしたり減らしたりしやすくなります。

  • A. 正しい。共有の場所に置けば、どのサーバでも同じセッションを使えます。
  • B. セッションIDは推測されないよう、十分に長いランダムな値にします。短くすると、なりすましの危険が高まります。
  • C. セッションの問題とHTTPSは関係がありません。通信の暗号化をやめるのは、安全性を下げるだけです。
この分野を解く 分野ページへ

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Web技術の基礎のほかの問題

  1. 署名を付けた一般的なJWT(JSON Web Token)の説明として、正しいものはどれか。
  2. 写真の印刷サービスのアプリが、利用者の許可を得て、別の会社の写真の保存サービスにある利用者の写真を読み出す。OAuth 2.0で、利用者に許可を求める画面を示し、利用者が許可するとアプリにアクセストークンを発行する役割はどれか。
  3. OAuth 2.0とOpenID Connectの関係の説明として、正しいものはどれか。
  4. RESTの考え方に沿ったWeb APIの設計として、適切なものはどれか。
  5. ブラウザで https://www.example.com:8443/docs/guide.html?lang=ja#install を開いた。このURLのうち、サーバへ送るリクエストには含まれず、ページを読み込んだ後にブラウザの中だけで使われる部分はどれか。