Webアプリケーションは,クライアント(Webブラウザ)から送られてくるリクエストを受け取って動作します。
通信(リクエスト・レスポンス)の仕組みとしては、次の方法が行われます。
1、通信型
・プル(pull)型
Webアプリケーション(ブラウズなど)がHTTPリクエストを行い、レスポンスを受ける。
サーバーから情報を「引き出す」ことによって動作するのでプルと呼ばれる
・プッシュ(push)型
Webアプリケーションが,サーバ側主導でレスポンスを受ける。
サーバーがクライアント側に情報を「押し込む」動作になるのでプッシュと呼ばれる
・ポーリング(polling)
定期的(例えば1秒間隔)でリクエストを行い、サーバーからレスポンス(最新情報を得る)を受ける
Webアプリケーションでは、サーバーの情報が更新されていてもいなくても,定期的にサーバーにアクセスする必要があります。
その場合,ユーザーが多くなってくると,サーバーへのアクセス数が非常に多くなってしまい、負荷が高くなってサーバダウンを考慮しなければなりません。
したがって、ポーリングで情報取得するより、プッシュ型で情報取得を考慮する必要があります。
その方法として、以下の方法があります。
第2回 Comet---プッシュ型のWebアプリケーションを作る
http://itpro.nikkeibp.co.jp/article/COLUMN/20080220/294242/Cometではポーリングが発生しなくなります。
したがって,サーバーへのアクセス数を減らすことができます。
また,サーバーに書き込みがあったタイミングで情報が送られてくるので,リアルタイム性も向上することになります。
2、セッション
(1)HTTP
Webアクセスに使うには「セッション」という概念がない。
そこで、サイト側が主導権を取って,Webブラウザとの間で情報をやりとりすることで,複数ページにまたがる一連のWebアクセスを「セッション」として扱うようになっている。
さらにWebサイトは,確立したセッションの処理の進行状態を管理する。
参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20081010/316684/
(2) セッション管理
Webアプリケーションで、ログインからログアウトまでが,一つのセッションとなります。
Webアプリは複数Webページにまたがっても,ユーザーを識別して,前のWebアクセスの処理結果を引き継いで処理を続ける。その陰では,複数のWebアクセスを関連付け,処理の進行状態を管理するセッション管理のしくみが働いている。
「ログイン」を必要とするサイトはセッション管理を行います。
セッション管理は、システム上で一意となるセッションIDをユーザーのブラウザとWebアプリケーション(または、サーバ)で共有することによって、Webアプリケーションがユーザーを特定することが可能となる。
共有する仕組みは、Cookieを利用するものと、GET/POSTパラメータなどを利用するものとで大きく2つに分けられる。
いずれの仕組みもWebアプリケーション側がセッションIDを発行してユーザーへの送信を行い、ユーザーが以降のアクセスでそのセッションIDを毎回Webアプリケーションへ送信する形となる。
参考URL:http://www.atmarkit.co.jp/ait/articles/0810/21/news133_2.html
セッションIDの管理は不備(セッションハイジャック)のないようにしっかり管理をする必要があります。
対策として、以下があります。
・推測困難なセッション ID を利用する
・セッション ID を URL に含めない
・HTTPS 通信で利用する Cookie には secure 属性を付与する
⇒HTTPS 通信時のみ Cookie の値を Webサーバーに送信する
・ログイン後にセッションを新規に開始する
・クラインアント、サーバ間のセッションIDを都度更新する
参考URL:http://www.websec-room.com/2013/03/09/497
また、2度押し対策も検討する必要がある。
0 件のコメント:
コメントを投稿