$_SESSION
グローバルに厳密に依存することは、あまり安全ではありません。セッションを「ハイジャック」し、SESSION
ID
クライアント側に保存されている を操作できるアプリケーションがあります。FireSheepを見てください。
私がお勧めするのは、ある種の特別なレベルのセキュリティを実装することです。追加レベルのセキュリティには、IP アドレスのホワイトリスト登録、または s の短い有効期限が含まれる場合がありますSESSION
。
また、安全でないphpセッションにデータを保存することも参照してください(同じ質問ではありませんが、似ています)。
ホワイトリスト IP アドレス:
管理者アクセス用のホワイト リスト IP アドレス で述べたように、ページへのアクセス許可を持つ IP アドレスの記録を保持できます。IP アドレスが許可されたアドレスに該当しない場合、ページへのアクセスは拒否されます。アドレスをデータベースに保存するか、スクリプトにハードコーディングすることができます (ハードコーディングは避けたいと思います)。
上記のリンクの zerkms から取得した、SESSION
テストを組み込んだ変更例を次に示します。
$whitelist = array('192.168.0.1', '192.168.0.2');
if ($_SESSION['is_admin'] !== true || !in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
//Admin denied.
header('Location: denied.php'); exit();
}
echo "You're an admin!"
セッションの有効期限を短縮:
ここでガンボの答えを読むことをお勧めします。
その他の資料: