PHPでは、セッションを使用して、ユーザーとサーバー間のデータを保存します。 session_start()関数はセッションを開始します。ユーザーがログインすると、PHPはサーバー上のユーザーのセッションIDを作成し、サーバーに関連するデータを保存し、クライアントはCookieを介してセッションIDを保存します。
ユーザーの終了を処理する際の最も重要なことは、セッション内のすべてのデータをクリアすることです。これは、ユーザーのプライバシーを保護するだけでなく、セッションのハイジャックやその他のセキュリティの問題を防ぐこともできます。
ユーザーが終了すると、セッションを破壊するためにsession_destroy()が呼び出されますが、これはすべてのセッションデータを完全にクリアしません。実際、 session_destroy()はセッションファイルを破壊するだけで、 $ _Session Hyperglobal変数のデータをすぐにクリアできない場合があります。
セッションデータを完全にクリアするには、次の手順に従ってください。
セッションデータを破壊する: session_unset()を使用して、 $ _Sessionに保存されているすべてのデータをクリアします。
セッションファイルを破壊する: SESSION_DESTROY()を使用して、現在のセッションを破壊します。
以下は、ユーザーが終了したときにセッションをリセットする特定のPHPコードです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 起動する session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// すべてをクリアします session データ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_unset</span></span><span>();
</span><span><span class="hljs-comment">// 破壊する session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span><span><span class="hljs-comment">// 消去 session ID 保存されています cookie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ini_get</span></span><span>(</span><span><span class="hljs-string">"session.use_cookies"</span></span><span>)) {
</span><span><span class="hljs-variable">$params</span></span><span> = </span><span><span class="hljs-title function_ invoke__">session_get_cookie_params</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">setcookie</span></span><span>(</span><span><span class="hljs-title function_ invoke__">session_name</span></span><span>(), </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>() - </span><span><span class="hljs-number">42000</span></span><span>, </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"path"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"domain"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"secure"</span></span><span>], </span><span><span class="hljs-variable">$params</span></span><span>[</span><span><span class="hljs-string">"httponly"</span></span><span>]);
}
</span><span><span class="hljs-comment">// ログインページまたはホームページにリダイレクトします</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: login.php"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
SESSION_START() :セッションを開始しない場合、開始しない場合、この手順が必要です。
session_unset() : $ _Session HyperGlobal変数のすべてのデータをクリアします。これは、ユーザーのセッションデータが削除されるようにするための最初のステップです。
session_destroy() :セッションファイルを破棄しますが、これは$ _Session変数をクリアしないため、データをクリアするにはsession_unset()を呼び出す必要があります。
セッションCookieを削除する:PHPがCookieを使用してセッションIDを保存する場合、クライアントに保存されているCookieを明示的に削除して、ユーザーのブラウザがセッションIDを保存しなくなることを確認する必要があります。クッキーの有効期限を過去に設定することにより、Cookieを削除する効果が達成されます。
リダイレクト:最後に、ヘッダー()関数を介してユーザーをログインページまたはホームページにリダイレクトして、出口操作を完了します。
セッションCookieの削除は、特に機密操作後の一般的なセキュリティ尺度です。ブラウザが閉じた後にユーザーがセッションデータに直接アクセスできない場合でも、攻撃者はセッションIDを使用して、Cookieに保存されている場合はセッションを復元できます。したがって、セッションCookieが削除されるようにすることは必要なステップです。
セッションハイジャック保護:セッションハイジャックを防ぐために、 session_regenerate_id(true)を使用して、ユーザーがログインしたときに新しいセッションIDを生成し、古いセッションIDを偽造できないことを確認できます。
HTTPSセキュアトランスポート: HTTPSを使用してユーザーセッションデータを保護し、送信中にセッションが盗まれないようにします。
定期的に有効期限をクリーンアウトする:合理的なセッションタイムアウトメカニズムを設定し、PHPのセッションを構成することによりセッションの有効期限を制御し、使用されなくなったセッションを定期的にクリーンアウトします。