0

ログイン画面を作ってみます。したがって、ユーザーが正しいユーザー名とパスワードを入力すると、次のようなセッションが作成されます。

session_start();
$my_session_id = session_id(md5("user's remote ip address") );

次に、$my_session_id をユーザー テーブルに保存します。

ページをロードするたびに、データベース内のフィールドに対して session_id() をチェックして、セッションが良好かどうかを検証します。

データベースが保護されていると仮定すると、コードは適切で安全ですか?

**編集: わかりました、安全ではないことはわかっていますが、これについてはどうですか:

session_start(); 
session_id(); 
session_regenerate_id(true); 
$new_session_id = session_id();
//save the new_session_id into table
set $_SESSION['user_ip'] = user's remote ip

次に、すべてのページで、データベースフィールドに対して $_SESSION['user_ip'] と session_id をチェックします

それは十分ですか?**

4

4 に答える 4

2

いいえ、そうではありません。任意の IP のセッション ID を再作成できるため、任意のセッションをハイジャックできます。デフォルトの session_id のままにし、(セッション固定攻撃を防ぐために) ログイン時に必ず再生成し、セッションと共に IP を保存して、セッションが実際にユーザーのものであることを確認します。

于 2013-08-08T13:49:12.313 に答える
0

セッションを開始すると、すでに独自のセッションIDが作成されています。独自に作成することはお勧めできません。

テーブルに保存したい場合は、それを取得してテーブルに保存でき$sessionId = session_id(); ます。いずれ良くなるだろう。

詳細については、http: //in3.php.net/session_idにアクセスしてください。

于 2013-08-08T13:49:25.157 に答える
0

いいえ、まったく安全ではありません。なぜあなたはそれをするのですか?セッションを IP アドレスにバインドする場合は、セッション変数に IP を格納してチェックします。

于 2013-08-08T13:48:39.243 に答える
-1

動的 IP を持つユーザーを確認する必要があります

于 2013-08-08T13:49:11.293 に答える