クッキー、セッションおよびトークンメカニズムに

I.はじめに

  これについて話をブログWebに広く使用されているアプリケーションCookieSession同様Tokenのメカニズムが、彼らは、Webアプリケーションで重要な役割が、また、インタビューの中で、高周波テストサイトを果たしています。このブログは私が主に概念と実装されているこれらの三つの原則、およびそれらの間の違いを紹介します。


第二に、テキスト

  2.1それらが必要とされる理由

  まず最初の質問の、なぜ私たちは、これらの3つのものが必要なのでしょうか?あまりにも少し理解がHTTPあることに注意する必要がありHTTP、プロトコルはステートレスなプロトコルです。ステートレスとは何ですか?つまり、HTTP各要求のためのサーバも同様に、発行されているような各要求の状態を記録していない、すべての要求はそれに外国人です。あなたは、同じサーバーへの2つの連続した要求を送信した場合でも、それは、これは2つの完全に無関係な要求です。しかし、我々はこのような現象は、我々はウェブサイトにログインしたときに、サーバーが私たちを知っているように見えた、私たちは要求を送ったでしょう、私たちは私たち自身に関連した応答を得ることができます。例えば、我々は、淘宝網、ログインした後、私たち自身の追加商品を見ることができるようになり、ショッピングカートをクリックして、私たちはサインインしていない場合、それは、ログインページへのジャンプをオフにブロックされます。これはなぜでしょうか?ないと言ってHTTP、それはステートレスです。実際には、これは上記の3つのメカニズムに依存しています。


  Cookie実際には、テキストデータの一部は、コンピュータのブラウザに保存されたkey-valueいくつかの私たち自身の情報だけでなく、サーバを含むフォーム、。我々はサーバーにリクエストを送信すると、サーバーは、私たちは、ローカルにいくつかのデータを保存したい場合があり、一緒にこの時間は、応答パケットの名前があるのヘッダになりますSet-Cookie(またはSet-Cookie2、バージョンによって異なります)ヘッダ行、希望を閲覧続きますこれは、ローカルデータに格納されています。ブラウザは、応答パケットを受信し、前記見つかったset-Cookieフィールドは、データがその中に含まれるコンピュータに格納されているだけでなく、サーバのアドレスを記録します。それはどのような使用これらのデータであること?我々は次のサーバにリクエストを送信すると、そのようなCookieデータは、一緒にサーバに要求メッセージで、サーバは、受信しますCookieクライアントで現在の送信要求を識別できるようにするために、データを、または同定することができますクライアントは、順番に操作に対応した応答を行います。このプロセスを以下に示します。

  以来Cookie、ローカルファイルに保存されているので、それだけで長い有効期限を設定する必要が長期間保存することができます。また、その原因に留意すべきでありCookie、それは、このように無効にし、クライアントのブラウザをできるように、実際に非セキュアデータストレージであるので、ローカルにCookieまた、Cookieデータのサイズを保存する機能も制限され、単一のクッキーが格納されたデータを超えることができません4K


  2.3セッション

  Session中国語の翻訳が呼び出されます。セッション、それは会話のクライアントとサーバであることを示しています。そして、Cookie同じではありません、Sessionサーバーによって維持されています。クライアントがサーバに要求を送信すると、サーバーはクライアントに、オブジェクトの要求を開始するために作成され、一連のサーバーに格納され、独特の生成中にSessionIdオブジェクトを識別するために、しかし、現在のユーザー情報を保存することができますについてこのオブジェクトインチ サーバがユーザに応答メッセージを送信するときに、するSessionId応答パケットに入れSet-Cookieヘッダ、ユーザは、検出されたときに、応答パケットを受信しSet-Cookie、その中に含まれるヘッダ行が、SessionIdローカルに格納されています。次回は、クライアントは、サーバに要求を送信SessionIdからCookie読み出し、およびサーバーに送信します。サーバーは、検出されたSessionId貯蔵した後Session、このコレクションオブジェクトを見つけるために、SessionIdユーザーに関する情報を取得するために、オブジェクトに対応します。ときにユーザーがログオン、サーバー:最も一般的な用途は、ユーザーがログインすることでSessionアイデンティティストアのユーザー情報、などuserIdユーザーの要求を受信した後、クエリSessionオブジェクトが、含む場合にはuserId、ユーザがログインしている、とすることにより取得することができることを示しているuserIdプライベートデータのクエリユーザー。サーバーは維持する必要はありませんSession、それは、ブラウザのユーザーを終了します、またはユーザーの要求を受信した後、いくつかの時間のためになりません、Sessionクリアします。

  しかし、Session一つ以上を維持するために、このような各ユーザーのとしていくつかの問題、サーバーの必要がありSession、時間をかけてサーバーにアクセスするユーザーの数が多い場合には、多数の維持するために、サーバのニーズが発生しますSessionオブジェクト、深刻なフットプリントを。また、今日のWebサーバ、テクノロジー・クラスターを採用している、各サーバーがクラスタSession達成するために、独立してSession共有がより困難な作業です。最後に、ブラウザはさらにポイント無効にすることができCookie、この時SessionIdに保存されることはありませんCookie。この時間は、ブラウザーが一般的である、URLに入れてSessionIdユーザーがページをシャットダウンしないようにする前に、これは、SessionId失われることはありません。


  2.4トークン

  Token主な役割は、ユーザーの行うことです認証をトークン:我々は、一般的にそれを呼び出します。我々は、Webサイトにログオンすると、サーバーに送信されたアカウントのパスワードを入力します。認証が成功した場合は、この時点で、サーバーが、アカウントのパスワードを確認するためにデータベースを照会するために、サーバは、いくつかの特別な暗号化アルゴリズムに基づいて計算しToken、(文字列)をクライアントに送信し、ユーザーのID情報もなど、過去に送られ、userId応答を受信した後、これをするTokenに格納されたCookie要求を再度、またはローカルメモリToken、及びuserIdサーバに送信されます。サーバーが要求を受信すると、クライアントの関連情報、再計算によるとToken、新たな場合は、Token値を使用してクライアントに送信されToken、ユーザーが検証される前に、同じ示し、サーバーに直接データを取得することができます。

  そして、私は感じていないのですSession多少似ているが、実際には違いは非常に大きいです。サーバコンピューティングTokenの値は、ユーザーの個人情報(例えばクライアントとして使用する必要mac地址もあることを保証し)、そして唯一の既知のキーサーバ自体、Tokenクライアントごとに一意である、との唯一のサーバ自身のキー理由ハッカーがサーバーの計算をシミュレートすることはできませんので、あなたは、知っているToken偽の要求を送信し、その後、値を。限り、サーバーがエラーを検出するとToken、それはクライアントの要求を許可しますが、認証にクライアントを必要としません。また、リクエストごとに、サーバーが同じように必要のないSession同じ、クライアントの身元保存、それは時間を計算する必要があるTokenであること、比較することができる、それが壊れないHTTPステートレスを。

  しかし、これはまたことを意味しToken、彼らは他人に傍受されると、他の側はあなたのアイデンティティを使用することができ、サーバーへの要求を行います。だから、Tokenそれは一般的に基づいているHTTPSの使用ではなく、危険な上HTTP使用します。また、ローカル暗号化処理に保存されているがそれに応じて行われます。


  3 2.5の違い

   (1)セッションとクッキーの違い

  1. セキュリティ: Sessionより多くのCookieセキュリティは、Sessionあなただけの独自のサーバーを表示することができ、サーバ側に保存されているSessionデータストレージを、それがCookie違法に読みやすく、クライアントのメモリです。
  2. アクセスの異なる種類の値Cookieテキストファイルに格納されたデータ、それはデータのみ格納されている文字列を可能にするので、それを文字列に変換するために必要な他のタイプのデータを設定したい、Sessionそれがサーバーに格納されているため、あらゆる種類のデータに保存することができますメモリ、基本的にオブジェクト。
  3. 別の妥当性は: Cookie私たちは、多くの場合、デフォルトのログイン機能、使いなど、長い期間を設定することができSession、クライアントが閉じる(デフォルト)または一般的な故障短い時間をSessionタイムアウトが失敗します。
  4. 異なるストレージサイズ:シングルCookie保存されたデータを超えることはできません4KSessionそれが格納されたデータよりもはるかに高いことができCookieますが、サーバは時にSession大きすぎると、それは、サーバが実行速度が遅くさせる、あまりにも多くのサーバリソースを占有します。

(1)セッションとトークンとの間の差

  Sessionそして、Token実際には本質的に異なる、彼らは同じことでは使用されませんされています。Session主な役割は、それが収集、保存管理して、現在の要求しているクライアントについての情報を知るために、サーバーのニーズである店舗セッション情報クライアントとサーバーにあるSessionクライアントの情報を含むオブジェクトを。しかし、Sessionサーバは現在の顧客を持っているとして、このメカニズムはまた、長いとして、検証のために使用することができSession、および関連する情報、現在の顧客が検証されたことをサーバーが含まれています。

  しかしToken、それはクライアントの状態を維持するために、サーバーを必要としない、その役割は、クライアントは、検証を行うには、いくつかのネットワーク攻撃を防ぐためにリクエストを送信するだけです。唯一のクライアント要求を認証し、応答が得られますサーバーは、そうでない場合は、それを確認する必要があります。また、Tokenよりセキュリティで認証Session2私たちは、サーバーを使用することができ、競合していないToken使用後、検証のためにクライアントに、およびSessionセッション情報を保存します。


第三に、要約

  顔にCookieSessionそしてTokenコンテンツが完全に真上、一般的な紹介をした、私が読んだ後、これら3人は一般的な理解を持つことができると信じて、彼らは本当に深く原則と実装の仕組みを勉強したいです十分ではない、我々はまた、より詳細な情報を学ぶ必要があります。


第四に、参照

おすすめ

転載: www.cnblogs.com/tuyang1129/p/12563602.html