HTTP[HTTPS]の基礎(2)

  •  hiddenフィールド

 画面には表示されず,複数のWebページ間でデータの受渡しを行う際に利用されるHTMLフォーム項目である。HTMLコードに記述するだけ。

例:<input type="hidden" name="fruit" value="くだもの" >

- メリット:手軽。

- デメリット:データの受け渡しに使用するのは危険。

危険な理由は、他のデータと同様にブラウザに送信されているから。

つまり、次のページにデータを受け渡す時に一度ユーザのブラウザを経由するため常に改ざん・参照などの危険性が伴う。

が、セッションID程度の情報のやりとりにはちょうどいい。

  • セッション変数

Webアプリケーション(PHPJavaScriptCGIなど)において、サ―バに保持されるセッションごとの記憶領域の事。

セッション変数に設定されたデータは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侵害手口

HTTPSはHTTPにセキュリティ機能を追加したもの。HTTP over SSL/TLS

Webページとの通信を暗号化する。

共通鍵暗号方式で暗号化処理を行い、公開鍵暗号方式で共通鍵を送信する。

ざっくりと流れ。全てクライアント目線。

[1]

クライアントがWebサーバにHTTPSでアクセス。この時、利用可能な暗号化アルゴリズムを送信する。

[2]

サーバから電子証明書、Webサーバの公開鍵が送られてくる。

電子証明書を確認、公開鍵がそのサーバのものか確認。

[3]

共通鍵暗号方式の共通鍵を作成し、Webサーバの公開鍵で暗号化してサーバに送信。

[4]

共通鍵暗号方式によって暗号化通信を行えるようになる。