クッキー、接続とセッションの間の違い、クッキー、セッション、トークンセッション、クッキー、トークンとの接触の間の差のトークンを完全に理解

系統

それはビューであるため、1ロングは、ずっと前に、Webブラウジングは、基本的には文書のみ、文書が表示されているものを一定の期間内に記録する必要はないサーバなど、すべてのリクエストは、新しいHTTPプロトコルであるが、それは依頼することですプラスの応答は、私はHTTPリクエストをしていた人は覚えていない、特に以来、各要求は私にとって新しいものです。この時間は非常にこんにちはスキンです

2が、しかしなどのオンラインショッピングサイト、ウェブサイト、などのインタラクティブなWebアプリケーションの台頭、を使用してログインする必要があり、すぐに問題に直面し、それが彼らのショッピングに行く人覚えておく必要がありますログインセッションを管理することです私は皆のための領域を分離しなければならないことを意味しており、商品に車を置くHTTPリクエストはステートレスであるため、これは、小さな挑戦ではないので、方法を考え出すことはセッション識別子(セッションID)を送信するために皆を与えることで、白氏は述べています、一人一人が、異なっているHTTPリクエストは、一緒に取るためにこの文字列が一緒に来たとき、あなたは私に開始するので、私は誰が誰であるかを区別することができますたびにランダムな文字列を受け取ります

3、それは非常にこんにちはスキンですが、サーバーが革ではありませんねえ、誰もがちょうどセッションID、セッションID、あなたは誰を保存するサーバーを維持する必要があります!サーバーなどへのアクセスの場合、千数百人、数千人の何百もしてきました。

これは厳しく、例えば、私は、クラスタを形成する2台のマシンを使用して、サーバのスケーラビリティを制限する、Fを通る小さなマシンAがシステムにログインし、そのセッションIDはそれを仮定して、マシンA上に格納され、巨大なサーバーのオーバーヘッドであると言われています行う方法Fは、小さな要求は、マシンBに転送されていますか?セッションID、マシンB小さなFああではないことがあります。

時には少しトリックを使用しています:スティッキーセッションでは、Fは、マシンAに付着された小さな要求をすることですが、これは効果的ではなく、マシンハングあれば、行くために、マシンBに行かなければなりませんでした。

これは、セッションIDが急速に枯渇2台のマシン間の周りに移動し、セッションのコピーを作成する必要がありました。

 

 

その後、トリックのMemcachedの支援をという男:一箇所に集中的に保存されたセッションIDは、すべてのマシンがこの場所のデータにアクセスするために使用され、この方法は、彼らはコピーしませんが、それは場合、単一障害点の可能性を増大させますそのセッションは、マシンがハングアップのために、誰もが何度も何度も、それが推定されMasiの人がログインしなければならなかった責任があります。

 

 

 また、このマシンを入れて一点のクラスタを思い付く、信頼性を高めるためにしようとしますが、どんな、私のためにこの小さなセッションが重荷ではありません

 

4、その一部の人々は、考えている私は、この厄介なセッションにそれを保存したい理由だけで、各クライアントが素敵な維持するために聞かせて、?

 

しかし、あなたが実際に私に送られ、クライアントのセッションIDを確認する方法、セッションIDを保存しない場合は、私の世代は何ですか?あなたが確認していない場合、我々は、彼らが正当なユーザーであることを知っていないログオンしていない、それらの人は、彼らがやりたい、悪質なセッションIDを偽造することができます。

 

ああ、はい、重要な点は確認することです!

 

例えば、小さなFがシステムにログインした、私は彼の提案ユーザID小F、Iは、HTTP要求を介して再び小さなFを訪問次回含まトークン(トークン)を、送信された、ときに、このトークンHTTPヘッダーを介しとそれを終わっていません。

しかし、このセッションIDと本質的な違いはありませんが、ああ、誰でも偽造できるので、私は他の人が偽のことができないように、について何かをしなければなりません。

 

そして、データが署名、例えば、私はアルゴリズムHMAC-SHA256、プラスは、私が鍵を知っているだけで作るために他の人が鍵を知らないので、データは、署名、署名と印として一緒にデータを作ります、トークンは、偽造することはできません。

 

 

 、このトークンは、私が署名後、私は同じHMAC-SHA256アルゴリズムと同じキーを使用する場合、データの再計算は私F以上にする場合、この小さなトークンを保存しない、と署名がトークン比較を行います申し訳ありませんが、認定:もしそうなら、私は小さなFがオーバーログインしている、と同一でない場合は、データ部分は確かに改ざんされて、ユーザID、小さなFに直接撮影することができますことを知って、私は、送信者を教えてあげましょう。

 

 

 

トークンデータ(Base64エンコードが、暗号化されていないと私は次に何だろうが)、プレーンテキストで保存されている、それはまだ他の人が見ることができるので、私は、パスワードなどの機密情報を保存することができません。

 

人のトークンが他の誰かに盗まれた場合はもちろん、その後私は、私は泥棒が正当な利用者であると思うだろう見当がつかない、これは人のセッションIDは、他の誰かが同じで盗まれた、実際にあります。

 

その結果、私はセッションIDを保存し、私はちょうどトークンを生成し、そのトークンを検証しませんが、私は私のセッションストレージスペースを得るために、私のCPU時間を使用します!

 

この負担のセッションIDのリフティングは危険のうち何も、私のマシンのクラスタが簡単にラインで直接水平方向のスケーリング、ユーザトラフィックが増加し、加えて、マシンを行うことはできないということができます。このステートレス感が素晴らしいです!

 

トークン、クッキーをに格納されたクライアント

保存されているセッションサーバー上;

 

クッキー

クッキーは、非常に特殊なものである指し恒久的に保存することができ、ブラウザ内のデータを、単にブラウザの実装のデータストレージ機能です。

 

ブラウザに送信され、サーバによって生成されたクッキーは、ブラウザのクッキーKVフォームディレクトリにあるテキストファイルに保存されたが、クッキーはサーバーにあなたが同じサイトを要求する次回に送信されます。クッキーがクライアント上に存在するので、ブラウザはクッキーが悪意をもって使用されることはありません確実にするためにいくつかの制限が追加されますが、あまりにも多くのディスクスペースを占有しないので、ドメインあたりのCookieの数が限られています。

 

セッション

文字通りセッションがあるセッションこれはあなたに似ており、どのようにあなたが現在とジョー・スミスに話を知っている、いないジョン・ドウがそれで、人に話を?彼はジョー・スミスであることを他のいくつかの特性(外観、など)が存在する必要があります。

セッションでは、同様の理由、あなたは彼のyesにリクエストをした人を知りたい現在のサーバーです。

この区別を行うために、各クライアントのために別のサーバーに行くこと「アイデンティティ」が割り当てられ、その後、サーバーに送信されるたびに、クライアントが時間を要求し、「アイデンティティ」に置かれ、サーバはリクエストが来ることを知っています誰が持っていました。この「アイデンティティ」を保存する方法クライアント用として、さまざまな方法を持つことができ、ブラウザクライアントのために、我々は、デフォルトのCookie方式を使用しています

サーバーが一時的にサーバーに保存されているユーザーのセッション情報使用して破壊されてしまうのサイトを離れた後、ユーザーセッションを。このユーザー情報が格納されているが、比較的クッキーはより安全ですが、セッションは欠陥があります:Webサーバーが負荷分散、セッションが失われます別のサーバーに、次の操作要求を行うにした場合。

 

トークン

 トークンは「トークン」を意味し、ユーザーのID認証である、からなる最も単純なトークン:元トークンのいくつかによって署名されたUID(ユーザーの一意のID)、時間(現在の時刻のタイムスタンプ)、記号( +塩)は、悪意のある第三者がスプライシング要求トークンサーバを防止することができ、固定長のハッシュアルゴリズムの16進文字列に圧縮されます。同じ引数はまた、複数の検索ライブラリを避けるため、トークンに置くことができます。

どこでもWebベースの検証トークンのアイデンティティの分野では。最も使用のWeb APIのインターネット企業では、トークンは、クライアントに保存されている、マルチユーザ認証を処理するための最良の方法です

プログラムの次のプロパティを使用すると、トークンベースの認証を使用できるようになります

1.ステートレス、スケーラブルな。

 モバイルデバイス用の2.サポート。

 3.クロスプログラムの呼び出し。

 4.セキュリティ;

大物のアイデンティティのトークンベースの検証を使用したものは、あなたのほとんどは、APIとWebアプリケーションは、トークンを使用し見てきました。FacebookやTwitterは、Google +、GitHubのようにというようにそのような。

 

のトークンベースの認証原則

トークンベースの認証はステートレスである、我々は、ユーザ情報サーバまたはセッションには存在しません。

この概念は、サーバー上に保存されている情報の問題の多くを解決します

  NoSessionあなたは、必要に応じてユーザーがログインしているかどうかを心配することなく、増加または減少させるために機械をプログラムできることを意味します。

次のようにトークンベースの認証は、次のとおりです。

1.クライアントは、ユーザー名とパスワードを介して要求を送信します。

2.プログラムを確認してください。

3.プログラムは、クライアントに署名したトークンを返します。

4.ストレージクライアントトークン、各送信要求のたびに。

認証トークンとサーバがデータを返します。

各要求はトークンが必要です。HTTPリクエストステートレスを確実にするために送信されるHTTPヘッダーのトークン。また、サーバーのプロパティを設定することで、アクセスが-Controlキーを許可 - 起源:*、サーバはすべてのドメインからの要求を受信できるようにします。処置ヘッドは、(指定)*、HTTP認証、SSL証明書とクッキーエンドのクライアント証明書を使用して好きではないマークされたときに、以下のことを注意してください。

1.利用者は、トークンがクライアントに返され、成功した後に確認し、チェックをログに記録します。

クライアントに格納されたデータを受信した後、2クライアント。

3.サーバーへのクライアントにAPIにアクセスするためのトークンを運ぶたびに。

4.サーバーは、フィルタ校正フィルタを使用しています。要求されたデータは、チェックが成功した返され、エラーコードがチェックに失敗した返されます。

 

私たちは、プログラム内のトークンと認証情報を取得する場合、我々は、このトークンを使用して多くのことを行うことができるようになります。

私たちも、トークンの権限に基づいて、サードパーティ製アプリケーションのパスを作成することができ、これらのサードパーティ製のプログラムは、(もちろん、唯一の我々ができるよう、特定のトークンで)我々のデータを取得することができます

 

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

1は、Cookieデータは、顧客のブラウザ、サーバー上のセッションデータに保存されています。

2、クッキーは、人々がローカルに保存されたクッキークッキーチートを分析することができ、非常に安全ではない
   セッションを使用する必要があり、アカウントのセキュリティを考慮する。

図3に示すように、セッションは、一定期間内にサーバに保存されます。増加にアクセスする場合より、サーバーのパフォーマンスを取るだろう
   、サーバーのパフォーマンスを軽減考慮に入れて、あなたはクッキーを使用する必要があります。

図4に示すように、格納されたデータが4Kを超えることができない単一のクッキーは、多くのブラウザは、クッキーを保存した20の部位の最大値に制限されています。

5は、とても個人的な提言:
   ログイン情報やその他の重要な情報がセッションとして保存され
   、必要に応じて追加的な情報は、COOKIEに配置することができます

トークンとセッションの違い

    セッションよりも優れた認証トークンセキュリティなどのOAuthトークンセッションと矛盾しない、各要求の署名はまた、盗聴やリプレイ攻撃を防ぎ、そしてセッションが通信のセキュリティを保護するために、リンク層に依存しなければならないので。前述したように、あなたがステートフルセッションを実装する必要がある場合、あなたはまだ、サーバー側で状態の一部を保存するために、セッションを増やすことができます

    アプリケーションは通常、サーバーで安らかなAPIを扱います。残りはそれが論理APIサーバ処理によって十分に自分自身をマークするため、セッションを保存するためにクッキーとしてセッショントークンをアプリブラウザが好き、セッション/状態ではない、ステートレスです。休息APIのステートレスバックエンドでない場合は、アプリでセッションを保存する必要があるかもしれません。Webkitのは、クッキーのセッションを管理するために隠されたブラウザを使用して、アプリに埋め込むことができます。

  HTTPセッションは、提供永続オブジェクトステートレスHTTPのためのストレージメカニズム、メカニズムです。単に安全であると考え、当分の間、理由SIDの予測不可能性のため、ユーザーセッションに情報を格納する認証のいわゆるセッション。これは、認証の手段です。トークンは、それはOAuthのトーク​​ンまたは同様のメカニズムを指したときに、その後、認証と承認を提供することで、認証は、ユーザーのために、アプリケーションのために許可されています。その目的は、情報のAppユーザーにアクセス権を許可することです。トークンここではユニークです。あなたが他のユーザーに行くことができない、アプリの他に転送することはできません。振り向くとセッションを言います。セッションが考慮され、このSIDは、このユーザーのすべての権限を持っていることを、一つだけの単純な認証を提供します。このデータの厳格な機密保持の必要性は、あなたが他のサイトやサードパーティのアプリケーションと共有すべきではない、駅前に格納する必要があります。だから、簡単な、ユーザーデータの場合と、サードパーティ製のシェアを必要とするかもしれない、または第三者がトークンで、APIインターフェイスを呼び出すことができます。あなたは常に自分自身のウェブサイト、自分のアプリケーションは、それは問題ではありませんどのような場合。

  トークンは、あなたの承認などのトークン、(ログイン)プログラムであるとき、彼はあなたがソフトウェアのライセンスを取得しているかどうかを判断するための基礎であり、クッキーは、ログイン情報などを含むクライアント上のtxtファイルに書かれている、あなたのように、ログイン時間のウェブサイト、それが自動的にユーザー名をログに記録し、自動的にクッキーを呼び出します。唯一のセッションでのセッションとクッキーは、ファイルサーバに書かれているが、また、クライアント上のクッキーファイルを書き込みする必要がありますが、お使いのブラウザの番号でファイル.Session状態は、サーバー側でのみセッションIDが格納されているクライアントであり、トークンステータスがクライアントに保存されています。

 

 

参考:

1.  クッキー、セッションを完全に理解、トークン

2.  セッション、クッキー、トークンの違いと接触

 

 
 

 

おすすめ

転載: www.cnblogs.com/gjmhome/p/11595034.html