2

私は PHP プログラミングにかなり慣れていないので、セッション変数にセキュリティ上の問題があるのではないかと思います。

現在、個別のログイン資格情報を必要とする 3 つのモジュールを含むプロジェクトに取り組んでいます。3 つのモジュールは、学生、教師、管理者向けです。

ユーザーがそれぞれのポータルにログインすると、これらの認証情報はセッション変数として保存されます。ブラウザで 2 つのタブが開いているとします。1 つは学生ポータルが開いており、もう 1 つは管理者ポータルが開いています。管理者がユーザー ID 2でログインした直後に、学生がユーザー ID 1で最初のポータルにログインすると、両方のポータルのユーザー ID は同じ (ユーザーID 1 )のように見えます。問題は、両方のポータルのセッション変数がブラウザーで共有されていることです。

セッション変数は、新しいタブを閉じた後でも、前のセッションから取得される場合があります (*var_dump[$_SESSION] を使用してテスト済み)

誰かがセッション変数を各ポータルに制限する方法を説明したり、php でのセキュリティ処理の他の方法についてのヒントを教えてくれませんか?

PS: セッション変数をクリアするログアウト ボタンがあります。タブが閉じられているか、新しいタブで新しいポータルが開かれている場合、問題は解決しないようです。

前もって感謝します。

4

2 に答える 2

1

いくつかのオプションがあります:

  1. ポータル単位で「session_name」を変更

セッション名を変更すると、セッションを識別する Cookie がポータルごとに異なります。この方法ではセッションは共有されないことに注意してください。ユーザーがポータルにログインした場合は、他のポータルにも再度ログインする必要があります。

  1. セッション名前空間を実装する

サブモジュールごとに 1 つずつ、メインの $_SESSION オブジェクトに配列を設定し、セッションを直接使用しているかのように各配列を使用できます。このアプローチを使用すると、セッションを共有できます (ポータル間で SSO を簡単に実装できます) が、いくつかのセキュリティ上の懸念が生じます。この方法でセッションにアクセスするための API を実装することは価値があります。

于 2013-08-15T17:49:53.587 に答える