ホームページ  >  記事  >  バックエンド開発  >  CodeIgniter 設定 SESSION 使用例分析、セッション使用例_PHP チュートリアル

CodeIgniter 設定 SESSION 使用例分析、セッション使用例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:00:25854ブラウズ

CodeIgniter設定SESSION使用例分析、セッション使用例

この記事ではCodeIgniter設定のSESSION使用方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

Codeigniter を初めて使用したとき、その中の SESSION に戸惑いましたが、その後、CI に付属の SESSION を使用することはなくなりました。SESSION を整理する必要があると思います。 CI の SESSION を理解するために、まず PHP で SESSION がどのように機能するかについて説明します。 HTTP プロトコル自体はステートレスであるため、ユーザーのアクセス ステータス情報を保持する場合、クライアントはサーバーに一意の識別子を渡す必要があります。この一意の識別子はクライアントの COOKIE に保存され、サーバーによって読み取られます。セッションステータスを保存するという目的を達成するために、この識別子に従って保存されたユーザーステータス情報が使用されます。 PHP でセッションを開始するには、次のステートメントを実行する必要があります:
コードをコピーします コードは次のとおりです: session_start();

1. クライアントがリクエストを行うたびに、一部の情報が HTTP ヘッダーに保存され、サーバーに送信されます。ユーザーの最初のアクセスを例に挙げます。
コードをコピーします コードは次のとおりです: リクエストヘッダー 受け入れる:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip、deflate、sdch
Accept-Language:zh-CN,zh;q=0.8
キャッシュ制御:max-age=0
接続:キープアライブ
ホスト:s.local
ユーザーエージェント:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/31.0.1650.63 Safari/537.36

2. サーバーはリクエストを受信して​​処理し、クライアントに返します。そして、COOKIE を追加するリクエストを HTTP レスポンスに追加し、COOKIE 名が PHPSESSID であり、その値が設定される必要があることをブラウザに伝えます。 r887k5n4scg32d4ba34huuhmq7、例:


コードをコピーします コードは次のとおりです: 応答ヘッダー キャッシュ制御: no-store、no-cache、must-revalidate、post-check=0、pre-check=0
接続:キープアライブ
コンテンツの長さ:0
コンテンツタイプ: text/html
日付:2013 年 12 月 8 日(日) 12:56:56 GMT
有効期限:1981 年 11 月 19 日木曜日 08:52:00 GMT
キープアライブ:タイムアウト=5、最大=100
プラグマ:キャッシュなし
サーバー:Apache/2.2.11 (Win32) PHP/5.4.7
Set-Cookie:PHPSESSID=r887k5n4scg32d4ba34huuhmq7; パス=/
X-Powered-By:PHP/5.4.7

3. クライアントが Web サイトのページに再度アクセスすると、ブラウザは COOKIE をサーバーに送信し、サーバーは COOKIE の値に基づいてサーバーに保存されている SESSION ファイルを読み取り、次のようなセッション情報を取得します。


コードをコピーします コードは次のとおりです: リクエストヘッダー 受け入れる:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip、deflate、sdch
Accept-Language:zh-CN,zh;q=0.8
キャッシュ制御:max-age=0
接続:キープアライブ
クッキー:PHPSESSID=r887k5n4scg32d4ba34huuhmq7
ホスト:s.local
ユーザーエージェント:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/31.0.1650.63

これにより、セッション状態を保存するという目的が達成されました。ただし、ユーザー A がログインしている SESSION ID を取得するとどうなるかにも注意する必要があります。上記のロジックによれば、リクエスト処理中に取得した SESSION ID がサーバーに送信されると、サーバーは SESSION ID に基づいてファイルを読み取り、ファイルのコンテンツが存在することを確認し、ユーザーがユーザー A であると判断します。 、ユーザー A はユーザー ステータスを取得し、これにより一部の機密性の高い操作が実行される可能性があります。したがって、セッションの有効期間内に SESSION ID を取得することは、ユーザーの承認を取得することを意味し、これは比較的危険です。ローカル管理システムを例に挙げると、Chrome 経由でログインすると、次のようにクライアントの COOKIE が表示されます。

何らかの方法でSESSION IDを取得すると、同じCOOKIEを送信してログインすることをシミュレートできます。 FireFox に COOKIE を追加できます。 Firebug を開いた後、以下のようにページを更新して管理システムにログインします。

通常、Cookieはjs経由で取得できるため、表示中にデータが実行されないようエスケープに注意する必要があります。次にCIのSESSIONを見てみましょう。設定ファイルには、セッションの使用に影響するセッション設定に関連するパラメータがいくつかあります。

リーリー

CI に付属する SESSION にはサーバー側のファイル ストレージがありません。$this->load->library('session'); が呼び出されると、セッションが開始されます。つまり、COOKIE がセットアップされます。COOKIE の内容は次のとおりです。 リーリー

クライアントがリクエストすると、この情報はHTTPヘッダーでサーバーに送信され、サーバーはHTTPヘッダーからSESSION情報を読み取ります。セッションも同様に実装できますが、この方法には不確実な要素が多くありますので、ソースコードに基づいていくつかの点について説明します。

1. ログ ファイルに表示される場合: セッション Cookie データが予期されたものと一致しませんでした。これは、ハッキングの試みである可能性があります。a.sess_encrypt_cookie が false、SESSION が暗号化されていない、COOKIE に保存されている、b. COOKIE に到達した後、検証に失敗しました。暗号化、復号化、およびパラメータの処理に関しては、マッチングに失敗する可能性が高く、失敗すると SESSION がクリアされます。

2. sess_match_ip が true の場合、クライアント IP が変更されると、SESSION は検証に失敗し、SESSION はクリアされます。

3. sess_match_useragent のデフォルトは true です。クライアントの UserAgent が変更されると、検証は失敗し、SESION はクリアされます。簡単な例としては、IE ブラウザを介してアクセスする場合、別の IE モードに切り替えると、エージェントが異なるため、検証が失敗し、SESSION がクリアされます。

上記の状況のいずれかが発生すると、SESSION がクリアされ、ログインが失敗するか、ログイン ページにジャンプすることがわかります。暗号化がなく、IP と UserAgent が検証されていない場合はどうなるでしょうか? COOKIE はクライアントに保存され、HTTP リクエストとともにサーバーに送信する必要があるため、まず、COOKIE が多すぎると速度に影響し、画像などの一部のリソースの帯域幅が完全に無駄になります。処理後はより小さく保存できます。

さまざまな不確実な要因により、あらゆる種類の奇妙な問題が発生します。過度の絡み合いを避け、思い切って他の方法に切り替えてください。

CodeIgniter フレームワークに関連するさらなるコンテンツに興味のある読者は、このサイトの特別トピック「codeigniter チュートリアルの概要」をチェックしてください

この記事が、CodeIgniter フレームワークに基づく皆様の PHP プログラム設計に役立つことを願っています。

興味がありそうな記事:

  • CodeIgniterの設定 -database.phpの使用例分析
  • CodeIgniterの設定 -routes.phpの使用例分析
  • CodeIgniterの設定 - config.phpの使用例分析
  • CI(Codeigniter)設定の強化構成クラスインスタンス
  • CodeIgniter での Smarty3 の基本構成の使用
  • Nginx での codeigniter フレームワークメソッドの構成
  • CI (CodeIgniter) フレームワーク構成
  • CodeIgniter の基本構成の詳細な紹介
  • CodeIgniter カスタム構成ファイルの解析
  • CodeIgniter 構成の自動ロード。 PHPの自動読み込み使用状況分析

www.bkjia.com本当http://www.bkjia.com/PHPjc/1093699.html技術記事 CodeIgniter 構成での SESSION の使用法の分析例、セッションの使用例 この記事では、CodeIgniter 構成での SESSION の使用法について説明します。参考のためにみんなと共有してください。詳細は次のとおりです: ちょうど使用しました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。