2011-07-14 7 views
2

私の友人がこの方法でセッションを開始します。 この方法でsession_startをより安全に開始できますか?

<?php 
session_start(); 
session_regenerate_id(); 
session_destroy(); 
unset($_SESSION); 
session_start(); 
?> 

は、セッションハイジャックに対して、どのようなセキュリティ上の利点はありますなど

ただ、なぜ疑問に思う)(通常のsession_startに対するとして;

+0

このコードはどこにありますか? –

+3

このようにすれば、それぞれのリクエストが新しいセッションになります。 –

+0

このコードは、セッションが削除された後、セッションが実行されるたびに新しい空のセッションを作成します。 –

答えて

5

あなたが必要があると思いますすべてがセッションを開始し、各リクエストに応じてそのIDを変更します

session_start() 
session_regenerate_id() 

です。ただし、セッションのハイジャックを防ぐことはできません。攻撃者がユーザーのセッションクッキーを取得し、ユーザーができる前にサーバーに要求を送り返すことができる場合、攻撃者は新しいセッションIDを取得し、無効なセッショントークンを残して効果的にログアウトします。

0

このコードでは、セッションが削除され、実行されるたびに新しい空のセッションが1つ作成されます。

session_destroy(); 
unset($_SESSION); 

これは、セッション内のすべてのデータが削除され、その後、session_startは、あなたのブランドの新しい1になります。

これを初めて実行して新しいセッションを作成することはできますが、セッション内のデータを他のページにロードする場合は、session_startが必要です。

2

このコードが特定のサイトのすべてのページの先頭にある場合、ポストバックと別のページの間で維持されるセッションはありません。ポストバックや複数のページで使用されないデータに対してサーバー側のストレージとしてSESSIONを使用したい場合は、それが実行可能かもしれないと思いますが、それは非常に奇妙な、おそらくほとんど開発されていないアプリケーションのためになります。

あなたの友人がしようとしていたように見えるものは、以前のセッション情報をすべて消去して新しいものを開始することです。おそらく、彼はいくつかの量子をチェックしており、それがPHPページにこれを含めて正しく評価されているのでしょうか?どのような場合でも、Rocketの関数を呼び出す方がうまく機能します。

関連する問題