2012-01-11 13 views
2

私のPHPサイトでのセッション管理に関するセキュリティのレベルを決定しようとしています。各ページの上部に私はPHPセッションとセキュリティ

if (!isset($_SESSION["user"])) {header('Location: login.php');} 

を実行するユーザーセッションがログイン時に作成されたPHPのタグで、皆さんは、これは十分に安全であると思いますか?サイト全体がSSLで動作します。

+0

私のリクエストで偽のセッションを送信した場合、これ以外の妥当性検査を使用して、誰とでもログインできないことを確認しますか? –

+0

これは技術的に間違っています。有効になっていると警告が表示されますが、 'if(array_key_exists( 'user'、$ _SESSION))' – Geoffrey

答えて

2

まあ、安全であることはさまざまなトピックの100年代を持っている...しかし、あなたが達成しようとしているものに関して、はい私は[ 'ユーザーことが

が、私はその$ _SESSIONを確認するには、いくつかの追加の検証を追加することになります罰金だと思います']は間違いなく正しいユーザーであり、セッションユーザーのIPアドレス、ユーザーエージェントなどの検出対象を比較しようとしますSession Hi-Jacking

また、EXIT; (「:X場所」):ヘッダの後

header("Location: xyz.php"); 
exit; 
2

はいそうです。エラーを起こしにくいようにするには、そのスニペットをファイルに入れ、各ページの上部にスニペットを含めます。そうすれば、ロジックを変更するために1つの場所を編集するだけです。

また、Locationヘッダーには、RFC仕様に従ってhttps:で始まるURL全体が含まれることになっています。それはまだいくつかのブラウザでは動作するかもしれませんが、依存してはいけません。

0

私はそれはあなたのユーザーがあなたのウェブサイトにログインしようとする場合、ランダムなトークン文字列を作成する方が良いと思います。その後、前のコードの横にあるすべてのページでチェックします。私は$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_USER_AGENT']とランダムな文字列を使ってそれを作った。

+0

ロードバランシングの背後にある人がいるので、REMOTE_ADDRプロキシ(政府機関)は、IPアドレスをブラウズするときにそれらの間をジャンプする原因になります。 – Geoffrey

0

少なくとも1回の負荷で、ユーザーを検証する必要があります。それ以外の場合は、セッションが存在するかどうかを確認するだけです。

関連する問題