PHP セッション管理のセキュリティを確保するには、次のセキュリティ ポリシーを実装する必要があります。 セキュア Cookie (HTTPS トランスポート、HttpOnly および Secure フラグ付き) を使用する 合理的なセッション ライフ サイクルを設定する セッションの再生成を使用してセッション ハイジャックを防止する クロスサイトを禁止するリクエスト フォージェリ (CSRF) (反 CSRF トークンの使用など) ファイル ストレージの代わりにデータベースを使用してセッション データを保存する
PHP セッション管理のセキュリティ ポリシー
はじめに
セッション管理は、ユーザーのリクエスト間で情報を保存できるため、Web アプリケーションにとって非常に重要です。ただし、安全でないセッション管理は重大な脆弱性につながる可能性があるため、堅牢なセキュリティ戦略を実装することが重要です。
セキュリティ ポリシー
1. 安全な Cookie を使用する
セッション ID は通常、Cookie に保存されます。 Cookie が HTTPS を使用して送信され、HttpOnly フラグと Secure フラグが付いていることを確認してください。これにより、スクリプトが Cookie にアクセスできなくなり、XSS 攻撃のリスクが軽減されます。
ini_set('session.cookie_secure', true); ini_set('session.cookie_httponly', true);
2. セッション ライフ サイクルの設定
ユーザー エクスペリエンスの中断を避けるのに十分な長さ、ただし意図しない承認済みのリスクを軽減するのに十分な短さのセッション ライフ サイクルを設定します。アクセス。
session_set_cookie_params([ 'lifetime' => 1800, // 30 分钟 ]);
3. セッション再生成を使用する
セッション再生成は、ユーザーがログインした状態を維持しながら、新しいセッションを作成して古いセッションを破棄することで、セッション ハイジャックを防ぎます。
session_regenerate_id(true);
4. クロスサイト リクエスト フォージェリ (CSRF) の禁止
不正なリクエスト フォージェリの送信を防ぐために、フォームに反 CSRF トークンを含めます。
<?php $token = bin2hex(random_bytes(16)); $_SESSION['csrf_token'] = $token; ?> <form action="/submit" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $token; ?>"> ... </form>
5. データベースを使用してセッション データを保存する
セッション データをデータベースに保存すると、ローカルの攻撃者がアクセスできなくなるため、ファイルに保存するよりも安全になります。セッション情報。
ini_set('session.save_handler', 'user'); session_set_save_handler(...);
実際的なケース
ログイン フォームがあるとします:
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']) && isset($_POST['password'])) { // 验证登录凭证 if (authenticate($_POST['username'], $_POST['password'])) { session_start(); $_SESSION['username'] = $_POST['username']; header('Location: dashboard.php'); exit; } else { // 处理登录失败 } }
このフォームを保護するには、次のセキュリティ ポリシーを採用する必要があります:
以上がPHP セッション管理のセキュリティ戦略の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。