HTTP[HTTPS]の基礎(2)
- hiddenフィールド
画面には表示されず,複数のWebページ間でデータの受渡しを行う際に利用されるHTMLフォーム項目である。HTMLコードに記述するだけ。
例:<input type="hidden" name="fruit" value="くだもの" >
- メリット:手軽。
- デメリット:データの受け渡しに使用するのは危険。
危険な理由は、他のデータと同様にブラウザに送信されているから。
つまり、次のページにデータを受け渡す時に一度ユーザのブラウザを経由するため常に改ざん・参照などの危険性が伴う。
が、セッションID程度の情報のやりとりにはちょうどいい。
- セッション変数
Webアプリケーション(PHPやJavaScript、CGIなど)において、サ―バに保持されるセッションごとの記憶領域の事。
セッション変数に設定されたデータはWWWブラウザに流出することがないため,安全にWebページ間のデータ受け渡しを行うことができる。
セッションIDと紐付けられる。
- セッションID
ユーザを識別するための情報。セッション変数と紐付けられる。
セッションIDをブラウザに覚えさせるには、以下の3つ。
- Cookieを使用する。
安全性はCookieを参照。参考:HTTP[HTTPS]の基礎(1) - n0g’s blog
- hiddenフィールドに書く。
第三者に値が流出する事故が起こる要因は少ない。
この中では一番安全。でも実装めんどい。
- URLの後にセッションIDを書く。(URL Rewriting)
危険。原則使用しない。理由はURL Rewritingを参照。
- URL Rewriting
Webサーバがブラウザに送るURLにセッションIDパラメータを付ける機能。
メリットはCookieが使用できない時に使用できる事。
デメリットは履歴に残る、盗聴されるとそのままセッションIDが盗まれるなどなど。。。
Cookieが使用できない時、携帯電話など以外は原則使用するなとIPAは言ってます。
IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第4章 セッション対策:セッション乗っ取り:#1 セッションIDとセッションID侵害手口
- HTTPとHTTPSの違い
HTTPSはHTTPにセキュリティ機能を追加したもの。HTTP over SSL/TLS
Webページとの通信を暗号化する。
共通鍵暗号方式で暗号化処理を行い、公開鍵暗号方式で共通鍵を送信する。
ざっくりと流れ。全てクライアント目線。
[1]
クライアントがWebサーバにHTTPSでアクセス。この時、利用可能な暗号化アルゴリズムを送信する。
[2]
サーバから電子証明書、Webサーバの公開鍵が送られてくる。
電子証明書を確認、公開鍵がそのサーバのものか確認。
[3]
共通鍵暗号方式の共通鍵を作成し、Webサーバの公開鍵で暗号化してサーバに送信。
[4]
共通鍵暗号方式によって暗号化通信を行えるようになる。