-1

セッションがクライアントのアクションを追跡するために使用されることを知っています。または単にログインのように、セッションがある場合は何かを表示し、そうでない場合はゲストであり、このセッションに値または属性も保存します。

これまでは、他のページでユーザーを認識するのに役立つ主要な属性として、常にユーザーの ID をセッション内に保存していました。

$_SESSION['userID'] = $userID; //example: 100, 101, 102...

この ID を取得し、この ID に従ってデータベースからデータを取得できます。

$userID = $_SESSION['userID'];
$query = "SELECT * FROM posts WHERE user_id = ".$userID;

これはセッションを使用する適切な方法ですか? ID をセッションに保存しないでください。セキュリティリスクはありますか? 保存しない場合、どうすればユーザーを認識できますか?

4

3 に答える 3

1

はい、ユーザー ID をセッションに保存しても問題ありません。ユーザーの認証には使用せず、代わりに認証 ID を使用してください。

それ以外には、セキュリティ上のリスクはありません。

機密情報 (パスワードなど) の保存には使用しないでください。

于 2013-03-15T13:50:15.820 に答える
0

セッションがユーザーに転送されることはありません。ブラウザは、セッションの ID を含む PHPSESSID という Cookie を取得します。

つまり、セッションに何を保存しても、サーバー上に完全に保持されます。

この観点から、セッション内のデータに対するセキュリティ上の問題はありません。好きなものをそこに保管できます。

于 2013-03-15T13:54:35.577 に答える
0

セッション スコープに保存する情報はできるだけ少なくします。

その理由は、最新のブラウザーでは、同じブラウザー インスタンスまたは別のブラウザー インスタンスのタブ間で同じセッションが共有されるためです。つまり、たとえばアプリケーションを Firefox で開いてから再度 Firefox を起動すると、新しい Firefox ウィンドウは古いウィンドウからセッションを継承します。

今悪い部分。ブラウザ 1 に session.abc = 123 があり、ブラウザ 2 で何かを行ってそれを 456 に変更し、ブラウザ 1 に戻って何らかのページ要求 (フォームの送信など) を行うと、そのリクエストで session.abc の新しい値を使用します。

私たちはこれにやけどを負いました。誤って間違ったレコードを更新してしまいました。

于 2013-03-15T14:00:53.847 に答える