2011-12-09 5 views
6

どのようにしてセッションのセキュリティを強化できますか?Codeigniterセッションセキュリティ

$this->session->userdata('userid') 

私はこの小さな悪い男の子を私のajax呼び出しのために投げています。私がしていない場合もあります。それから、私はDOMのIDを使って本当に安全なのでしょうか? DOMがユーザーアカウントデータをハッキングするように変更された場合はどうなりますか?だから私はいつもユーザーが自分のIDに関する何かをやっていると思うのですが、セッションだけが参照されるべきです。私は正しい?あなたは、データベース内のセッションデータを保存しない限り、ユーザーのCookieに保存されたセッションデータの配列は、 セッションIDが含まれていますが

:そうのように参照さ

$this->some_model->do_data_stuff($dataId, $this->session->userdata('userid')); 

は、その後、私はこれを読んでそれを検証する方法はありません。 セキュリティがほとんどまたはまったく必要ないアプリケーションでは、セッションIDの検証は必要ない場合がありますが、アプリケーションにセキュリティが必要な場合は、検証が必須です。そうしないと、ユーザーがCookieを変更すると、古いセッションが復元される可能性があります。 http://codeigniter.com/user_guide/libraries/sessions.html

私は、財務データを格納するつもりはありませんが、私は今までに破損した自分のサイト上の任意のデータを望んでいません。 SOはセッション検証を使用していますか?この検証ではどれだけのオーバーヘッドがかかりますか?セッションはどのようにハッキングされますか?セッションのセキュリティを考慮する必要があるものは何ですか?

答えて

18

のCodeIgniterセッションの使用はかなり安全です。ユーザーが入力した内容を信頼する必要はありません。 AJAXを使用していても、CodeIgniterセッションは標準コールと同様に動作するため、同じセキュリティが適用されます。

CodeIgniterセッションは、サーバがクッキーを保存し、ユーザがクッキーの内容を変更するアクションを実行するたびに、前のクッキーと比較されます。

ユーザがブラウザでセッションクッキーの内容を変更すると、CodeIgniterは次回のサーバコールで気付き、基本的にユーザをログアウトさせます。

CodeIgniterでは、本当にユーザーのブラウザにクッキーに保存されたデータを必要としない、そして限り、あなたは

$this->session->userdata('userid'); 

を使用しているとして、あなたは、信頼できるサーバ側のデータを取得するつもりです。ユーザーはそれを変更することはできません。さらに、クッキーは暗号化でき、暗号化する必要があります。 CodeIgniterのconfig.phpを見てください。

セッションデータには、短いリフレッシュタイムアウト(通常は300秒)、IPが変更されたかどうか、およびブラウザが変更されたかどうかを確認するいくつかの保護機能があります。言い換えれば、最悪の場合のシナリオでは、セッションデータをスプーフィングする唯一の方法は、ブラウザの同じバージョンを使用し、同じIPを持ち、コンピュータに直接アクセスしてCookieをコピー/ペーストし、 5分以内に

だから、あなたの隣に座っている人に注意してください!