PHPにおけるCookieとセッションの違いは、Cookieデータはクライアント側に保存されるのに対し、セッションデータはサーバー側に保存されることです。当然、使用方法に細かい違いはありますが、後者の方がはるかに安全です。前者。
1. cookie&sessionの概要と違い
Cookieデータはクライアント側に保存され、セッションデータはサーバー側に保存されます。
簡単に言えば、Web サーバーがセッションを使用している場合、Web サイトにログインすると、クライアントがサーバーにリクエストするたびに、現在のセッションのセッション ID が送信され、サーバーはそれを送信します。現在のセッションに基づいて sessionid を送信します。 sessionid は、ユーザーがログインしているか、または特定の権限を持っているかどうかを判断するために、対応するユーザー データ フラグを決定します。データはサーバー上に保存されるため、偽造することはできませんが、ログインしているユーザーのセッション ID を取得できれば、特殊なブラウザを使用してユーザーのリクエストを偽造することもできます。通常、セッション ID はサーバーとクライアントの接続時にランダムに割り当てられますが、同時リクエストが多い場合は重複する可能性があります。ウェブサイトにログインすると、最初は自分の情報が表示されますが、しばらくするとタイムアウトになり、更新すると実際には他人の情報が表示されます。
ブラウザが Cookie を使用している場合、すべてのデータはブラウザ側に保存されます。たとえば、ログイン後、サーバーは Cookie のユーザー名 (ユーザー名) を設定します。その後、サーバーに再度リクエストすると、ブラウザはユーザー名を設定します。ブロックはサーバーに送信され、これらの変数には特定の特別なマーキングが付けられます。サーバーはそれを Cookie 変数として解釈します。したがって、ブラウザが閉じられていない限り、Cookie 変数は常に有効になるため、長時間切断されないことが保証されます。ユーザーの Cookie 変数を傍受し、データ パケットを偽造して送信できたとしても、サーバーはユーザーが正当であると認識します。そのため、Cookieを利用した攻撃を受ける可能性が比較的高いと言えます。有効期間が設定されている場合、Cookie はクライアントのハード ドライブに保存されます。次回 Web サイトにアクセスすると、ブラウザはまず Cookie があるかどうかを確認し、Cookie がある場合はそれを読み取って送信します。それをサーバーに送信します。あなたのマシンにフォーラム Cookie を保存した場合、有効期間は 1 年間です。誰かがあなたのマシンに侵入し、あなたの Cookie をコピーし、それをブラウザのディレクトリに置いた場合、その人が Web サイトにログインすると、その情報はログに記録されます。あなたのアイデンティティと一緒に。したがって、クッキーは偽造できます。もちろん、偽造する際にはいくつかの工夫が必要です。Cookie ファイルをブラウザが認識しないように、Cookie ファイルを直接コピーすることもできます。この Web サイトの Cookie ファイルは、保証時間の観点からブラウザから騙される必要があります。私はかつて学校の VBB フォーラムで、他の人の Cookie をコピーしてログインし、誰かに投稿するという実験をしました。他の人の名前は全く問題ありませんでした。
セッションは、アプリケーションサーバーによって維持されるサーバー側のストレージスペースであり、ユーザーがサーバーに接続すると、サーバーによって一意のセッションIDが生成され、サーバー側のセッションストレージスペースにアクセスするための識別子として使用されます。 。 SessionID データはクライアントに保存され、ユーザーがページを送信すると、SessionID がサーバーに送信され、セッション データにアクセスします。このプロセスには開発者の介入は必要ありません。したがって、クライアントが Cookie を無効にすると、セッションも無効になります。
サーバーは URL 書き換えを通じて SessionID の値を渡すこともできるため、Cookie に完全に依存するわけではありません。クライアント Cookie が無効になっている場合、サーバーは URL を書き換えることでセッション値を自動的に保存でき、このプロセスはプログラマにとって透過的です。
Cookieを書かなくても、request.getCookies();で取り出されるCookieの配列の長さも1で、このCookieの名前はJSESSIONIDという長いバイナリ文字列になっています。これは SessionID の値です。
2. Cookieの設定と適用
基本構文: setcookie("cookie", "cookievalue", time()+3600, "/forum", ".xxx.com", 1);
- - (
基本文法にアクセス:
コードは次のとおりです | コードをコピー |
$mycookie をエコー; エコー $cookiearray['0']; echo $_COOKIE['mycookie'] (推奨) echo $HTTP_COOKIE_VARS['mycookie']; |
Cookieを削除する
基本的な構文を削除します:
コードは次のとおりです | コードをコピー |
setcookie("cookie",""); (元の値を空の cookie で上書きします) setcookie("cookie", "value", time()-1/time()) (時間破壊) |
例:
コードは次のとおりです | コードをコピー |
if ($_POST['ユーザー'] && $_POST['パスワード']) { |
注: Cookie は出力前に操作する必要があります。操作しないとエラーが発生します。
------------------------------------------------- -----
1.セッションの構成とアプリケーション
基本構文:
コードは次のとおりです | コードをコピー |
session_start(); //初期化はファイルヘッダーに配置する必要があります。 $_SESSION['name'] = 値; //セッションを設定します。 echo $_SESSION['name'] //セッションを使用します。 isset($_SESSION['name']); //判定。 unset($_SESSION['name']); //削除。 session_destroy(); //すべてのセッションを破棄します。 |
セッションとクッキーの違いを紹介するためにいくつかの例を示します
:セッション
セッションを開始:
session_start();
PS: この関数はファイルの先頭に配置する必要があります。先頭にスペースを入れずに先頭に記述するのが最善です。
セッションを設定します:
$_SESSION['名前']='値';
PS: 使用する場合は、$_SESSION[] メソッドを直接使用して値を設定します。「[ ]」の部分はセッションの名前で、「=」の後に値が続きます。
セッションを読む:
echo $_SESSION['name'];
设 PS: セッションを設定する場合でも、セッションを読み取る場合でも、まずセッションを開く必要があります (session_start () を使用します)。
1. ブラウザを閉じて、1 を自動的に破棄します。
bool setcookie(文字列名[,文字列値[,int期限切れ[,文字列パス[,文字列ドメイン[,bool secure[,bool httponly]]]]])
O 名前: Cookie 変数名
C 値: Cookie 変数の値
ドメイン: 有効なドメイン名、一意のトップレベル ドメイン
️ setcookie('username','hello', time()+3600);
setcookie("username",'hello', time()+3600,"/~rasmus/",".paea.cn",1);
C PS: 出力データ操作は setcookie の前に置くことはできません。そうしないと、session_start () と同様のエラーが発生します。クッキーを読んでいます:
$_COOKIE['ユーザー名'] をエコーします。'||';
️ echo $HTTP_COOKIE_VARS["ユーザー名"];
クッキーを破棄します:
過去の時刻を設定して Cookie をログアウトします
️ setcookie('username','hello', time()-3600);
C PS: 出力データ操作は setcookie の前に置くことはできません。そうしないと、session_start () と同様のエラーが発生します。
要約すると
機能:
セッションと Cookie はどちらもユーザー データを一時的に記録するために使用されます。 違い:
1. SESSION はサーバー側に保存され、ユーザーは変更できませんが、COOKIE はクライアント側に保存され、ユーザーが変更できるため安全ではありません。
2.セッションはサーバー上に一定期間保存され、サーバーリソースを占有します。 Cookie は、ユーザーのウィンドウの下の Temp ディレクトリに保存されます。
3. クライアント上の 1 つの Cookie の制限は 4k です
4. セッションのトラバーサルには $_SESSION[] を使用し、Cookie のトラバーサルには $_COOKIE[] を使用します
5. Cookieを無効にするとセッションは使用できなくなります
6. セッションを使用する場合は、session_start() を追加する必要があり、以前の出力があってはなりません。
http://www.bkjia.com/PHPjc/632637.htmlwww.bkjia.com
true