ホームページ >php教程 >php手册 >セッションとクッキーの違いと理解

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

WBOY
WBOYオリジナル
2016-06-21 09:14:20742ブラウズ

クッキー|セッション

Session と Cookie の区別と理解
まずはセッションについて話しましょう

SESSION に関する議論は後を絶たないようですが、SESSION を理解できる人は 9 割以上いるはずです。でも、年をとりすぎないように、もう一度話しましょう~

SESSION の使用に同意する人もいれば、同意しない人もいます。しかし、この質問にはどう答えればよいでしょうか?私の意見を聞いてください。もし間違っても、金の延べ棒とコイン以外のものを投げないでください。

私がプログラマーであることを知っている人もいると思いますが、プログラマーシップで最も重要なことは効率です。しかし、ここではデザインについては話しませんが、より実践的な観点から SESSION を見てみましょう。

まず、SESSION が何をするのかについて説明しましょう。SESSION は、特定のユーザーの IE とその現在のウィンドウで開かれているウィンドウの対象となるユーザー情報を保存できるユーザー情報保存メカニズムです。なんでそんなこというの。まずはSESSIONがどのように起動されるかを見てみましょう。IEを開いてWebサイトを閲覧すると、SESSIONIDと画像、音声、FLASHなどの各種データのダウンロード許可を要求するコマンドが発行されます。
実際のデータ送信内容:IEからサーバー
GET / HTTP/1.1
Accept:image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/x-shockwave-flash、*/*
Accept-言語0: zh-cn
受け入れエンコーディング: gzip、deflate
ユーザーエージェント: Mozilla/4.0 (互換性; MSIE 5.01; Windows NT 5.0)
ホスト: www.jh521.com
接続: Keep-Alive
サーバーが戻りますa 未使用のSESSIONIDはIEで使用されます。その際、IEは返されたSESSIONID

を保存し、同時に該当ページのダウンロードデータを返します。 Server to IE
HTTP/1.1 200 OK
Server: Microsoft -IIS/5.0
Date: Sun, 30 Nov 2003 16:41:51 GMT
Content-Length: 21174..Content-Type: text/html
Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; パス=/
キャッシュ制御: private
次に、ページの HTML コードがあります。この時点で、この IE プログラム (クライアントではありません) の SESSIONID は IBOMFONAOJFEEBHBPIENJFFC であり、IE がこのサイト上の ASP プログラムにアクセスすると、IBOMFONAOJFEEBHBPIENJFFC がサーバーに送信され、サーバーはそれを認識します。 IBOMFONAOJFEEBHBPIENJFFC は、SESSION("name")="name" を SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name"
または
SESSION(SESSIONID)("name" と見なすことができます。 )="name"
このように、SESSIONはユーザーを区別するだけです。
サーバーがこの ID をフィードバックすると、この ID が使用されているかどうかを確認します。変更しても、それを繰り返すことはできません。誰かの SESSION ID をシミュレートして騙すこともできます。ただし、相手の IE 送信信号を取得し、その時点で SESSIONID が解除されていないことを確認した上でのみ実装可能です。

でも、時間があれば、POST 信号を通じて彼の NAME と PASS を直接見つけることができます。わざわざ SESSIONID の仕組みを理解している人もいると思うので、COOKIE について見てみましょう。厳密に言えば、SESSIONID は同じ種類ではありませんが、同じものに属します。 COOKIE を設定すると、サーバーは IE にコマンドをフィードバックします。 IE は、このネットワーク コマンドを通じて COOKIE を生成し、保存します。この情報は、このサイトにアクセスし、COOKID が有効なときなどに取得されます。

では、なぜ SESSION の代わりに COOKIE を使用するのか
違いを見てください

コンテンツを転送するための有効な時間と保存方法
COOKIE はローカルに設定して明確な情報を保持できます

SESSION IE が閉じず、サーバーが閉じた場合には、SESSIONID のみが存在しますタイムアウトではありません

次回からユーザー名やパスワードを入力せずに Web サイトにログインできるようにしたい場合は、COOKIE のみを使用できます。これは、COOKIE レコードが削除されるか期限切れになるまで長期間保持できるためです。 )、SESSION はありません。 はい、あまり長く保持されず、IE は閉じた後に SESSIONID レコードを自動的にクリアします。次回ログインするときに新しい SESSIONID が要求されます。サーバーがユーザーのステータスを確認する必要がある場合。ユーザーの個人変数を介して、ユーザー権限を USER に設定している場合、COOKIE

は使用できません。 IEがアクセスすると、USERのクリアコードがサーバーに送信されます。

それではCOOKIEレコードを直接変更してUSERをADMINに変更するなどの手段を使うと大変です



しかし、ユーザー名やパスワード、Web サイトの配色などの情報を保存するには、COOKIE を使用するのが最適です


さて、このことについて話していて少し疲れてきました
Request.ServerVariables("HTTP_REFERER")

この Request.ServerVariables("HTTP_REFERER")
を使用して、いくつかの重要な制限、特にリモート送信や違法な侵入に対処するために使用している人もいると思います。
次に、サーバーによって取得された HTTP_REFERER 情報は、IE によって完全にサーバーに送信されることを思い出してください。これは、VB を使用して侵入を作成するのに 30 分もかかりません。 HTTP_REFERER をターゲットとするプログラム。
(残念ながら最初は彼は何も深刻なことをしていなくて、Web ゲームの AFK プログラムだと思っていました)




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。