2017-06-11 6 views
4

自分のアプリケーションにCodeigniter 3を使用しています。セキュリティを強化するために、すべてのセッションを破棄するオプションをユーザーに提供します。特定のユーザーからのすべてのセッションを破棄します

なぜですか?ユーザは、異なるデバイスにログインしているときに複数のアクティブなセッションを持つことができるためです。 1つのデバイスまたはアカウントがハイジャックされた場合、ユーザーはすべてのアクティブなセッションを破棄する可能性があり、ハイジャックされたアカウント/デバイスはCIアプリケーションによって強制的にログアウトされます。

Codeigniterとsess_time_to_update設定ではそれほど簡単ではありません。特定の時間が経過すると、セッションは新しいセッションIDで再登録されるためです。

Destroying a specific session in Code Igniterは、セッションの再生成時にユーザーID列がユーザーIDで埋められないため、ソリューションの半分に過ぎません。

要するに目的は: CIは、すべてのユーザーIDに基づいて、セッションや方法を見つけるために、機能を必要として、自動的に

をいただき、ありがとうございますsess_time_to_update設定によって再生された後、我々はセッションにユーザーIDを追加することができますヒントとヘルプ

+1

...物事はあなた –

+0

のために軌道に乗るだろう、私は、ユーザーがログアウト取得するときに、データベースにフラグを追加していることを確認することができると思いますユーザーが他のデバイスからログインしようとするたびに –

答えて

1

理想的には、カスタム関数を自分で作成することをお勧めします。 codeignighterは、codeignighterがPHPでブートストラップがCSSであるため、ブートストラップに似ています。単純なPHPコード、はいそれはライブラリにPHP関数を持たせると便利ですが、ほとんどのPHPコーダーはそれをとにかく行います。私は個人的に私のカスタム関数名を共有していません。しかし、セッションをあまりにも長く生かし続けることも、セキュリティ上のリスクです。接続するユーザーごとに、$ _SERVER配列にセッションCookieがあります。あなたがする必要があるのは、これらのクッキーをdbテーブルに保存してから、それらのクッキーエントリを削除キュー(別のテーブル)に移動し、Javaを使用して(時間間隔で)コマンドを呼び出してだから、コマンドにより、クッキーの設定を解除する場合は、クッキーは、削除キューにある:私のシステムの一つで

setcookie("PHPSESSID","",time()-3600,"/"); 
////then kick them out: 
session_destroy(); 
header('Location: index.php'); 

exit(); 

、私は別のクッキーのシステム、そのオフベースの接続や他のクライアント変数を思い付い。それは見ていないかどうかを確認する(クッキー、IPアドレス、クライアントのホスト名といくつかの他)のいずれかが、そこから解析され、それは、(管理者の監査のための)テーブルに不一致IPアドレスを追加し、その後にアドレスをIP を追加しますファイアウォールのIPアドレスを拒否し、FBIのWebサイトにリダイレクトします。私もそのWebサーバー上で私はvpnの接続を受け入れないように、彼らはVPNの背後に隠れることができると思うそれらのハッカー、彼らはサーバーにアクセスすることはできません(Webブラウザタイムアウト。私はあなたがカスタムsessionhandlerを作成し、データベース内のセッションを保存する必要があると思うLOL)

関連する問題