セッション モジュールは、セッションに保存した情報がセッションを作成したユーザーのみに表示されることを保証できません。セッション内の機密情報を保護するには、追加の手順を実行する必要があります。機密情報を保護する方法は、セッションに保存するデータの機密性によって異なります。
session_start — 新しいセッションを開始するか、既存のセッションを再利用します。
厳密なセッション管理 (推奨される学習: PHP プログラミングの入門から熟練度まで )
現在、デフォルトでは、PHP は適応的な方法でセッションを管理するため、非常に柔軟に使用できます。一定のリスクをもたらします。
PHP 5.5.2 以降、新しい設定項目 session.use_strict_mode
が追加されました。この構成オプションが有効であり、使用しているセッション ストレージ プロセッサがそれをサポートしている場合、初期化されていないセッション ID は拒否され、それらに対して新しいセッションが生成されます。これにより、攻撃者が既知のセッション ID を使用することができなくなります。
たとえば、攻撃者は、セッション ID を含むリンクを電子メール経由で被害者に送信できます: http://example.com/page.php?PHPSESSID=123456789。
session.use_trans_sid
構成項目が有効になっている場合、被害者は攻撃者が提供したセッション ID を使用して新しいセッションを開始します。 session.use_strict_mode
オプションを有効にすると、リスクを軽減できます。
警告
ユーザー定義のセッション ストアは、セッション ID 検証を実装することで厳密なセッション モードをサポートすることもできます。ユーザーが独自のセッション ストレージを実装する場合は、セッション ID の有効性を必ず確認することをお勧めします。
ブラウザ側では、セッション ID の保存に使用される Cookie のドメインとパスを設定できます。HTTP アクセスのみが許可され、HTTPS アクセスとその他のセキュリティ属性を使用する必要があります。 PHP バージョン 7.3 を使用している場合は、Cookie に SameSite 属性を設定することもできます。攻撃者はこれらのブラウザ機能を悪用して、永続的に利用可能なセッション ID を設定する可能性があります。
# session.use_only_cookies 構成項目を設定するだけでは、この問題は解決できません。
session.use_strict_mode 構成項目により、このリスクを軽減できます。初期化されていないセッション ID を拒否するには、
session.use_strict_mode=On を設定します。
注: session.use_strict_mode 構成項目を使用すると、柔軟なセッション管理によって引き起こされるリスクを軽減できますが、攻撃者は依然として JavaScript インジェクションやその他の手段を使用してユーザーを強制します。攻撃者によって作成され、正常に初期化されたセッション ID を使用します。
session.use_strict_mode 構成項目を有効にし、タイムスタンプベースのセッション管理を使用し、
session_regenerate_id() 構成項目を設定してセッション ID を再生成した場合、攻撃者は生成されたセッションをID は削除できます。
警告
期限切れのセッション データにアクセスしても、必ずしも攻撃が進行中であることを意味するわけではありません。不安定なネットワーク状態や誤ったセッション削除動作により、正当なユーザーが期限切れのセッション データにアクセスする可能性があります。関連トピックの推奨事項: php セッション (画像、テキスト、ビデオ、ケースを含む)
以上がPHPでセッション管理を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。