2011-11-09 12 views
1

CodeIgniterセッションをデータベーステーブルに格納することを推奨するのはなぜですか?私はそれがセキュリティについて知っていますが、どうですか?CodeIgniterセッション

なぜセッションクラスを使用するときに暗号化キーを設定する必要がありますか? セッションを復号化する予定ですか?

$this->session->sess_destroy();クッキー全体またはクッキーに入れたデータだけを削除しますか?セッションを完全に終了しますか?つまり、元に戻すことを意味します。 $this->load->library('session')

答えて

3

CIのセッションは実際にはクッキーです。それにもかかわらず、暗号化されています。そのため、特に攻撃を受けにくいターゲットを処理している(おそらくSQLステートメントを避けるように)アクティブレコードを使用してクエリを自動的にエスケープするため、セッションをデータベースに保存するほうが有利です。 また、クッキーとは異なり、DBは利用可能なメモリ容量が限られているので、必要な量のデータを保存し、操作をキャッシュし、フロントエンドから隠しておくことができます。

いくつかのセッションデータがであり、それが自動的にに暗号化されている点を除いて、なぜ必要なのか分かりません。したがって、暗号化ライブラリを使用しなくても、一部の暗号化は(セッションIDを保存しているときなど)引き続き暗号化されます。 Kai Qingが正しく指摘したように、CIですでに処理されているデータに対しては復号化を行う必要はありません。

$this->session->sess_destroy()は、セッションとして保存されたデータを削除するだけです。クッキーでもある一方で、コンテンツ全体を削除するには、専用の機能を使用する必要があります(たとえば、Cookieヘルパーを調べるなど)。ただし、この関数を呼び出すと、フラッシュメッセージもセッションとして削除されるため、一部の要素の設定を解除する場合は、unset_userdata($item)を使用してください。

ライブラリの読み込みも終了しません。他のライブラリやクラス、コントローラーなどは、リクエストごとにすべてがゼロからリロードされます。スクリプトを実行するたびに、スクリプトが実行され、すべてが再初期化されます。スクリプトが終了すると、雨の中で涙のようにすべてが失われます。それはPHPスクリプトの定期的な寿命です。 session-> sess_destroy()を呼び出した後にスクリプトが終了するようにバインドされていない場合、データは消去されますが、セッションライブラリはまだロードされます。

2

最初の質問に答える - セッションで見つかったデータを最小限に抑え、愚かさのリスクを軽減するために、DB経由で保存することをお勧めします。 DBに格納されたセッションはIDをクッキーに格納するだけなので、利用可能な情報は使用できないビットの情報に縮小されます。

何かを復号化する必要はありません。エンジンがそれを処理します。

破壊について - 私は正確にはわかりません。しかし、私は単純なvar_dumpがそれに答えると思います。

関連する問題