0

ユーザーがログインしたときにセッションを作成するようにスクリプトを設定しました。

次に、ログイン時のユーザー名とパスワードのセッションに基づいて、users テーブルからユーザーのアクセス許可レベルが他のいくつかのフィールドと共に取得されます。

次に、ユーザーのアクセス許可とユーザー ID をセッションとして設定しました。

次に、ユーザーIDを使用して、IDに基づいて他のテーブルからものを選択します。

これは安全ですか?誰かがセッションを強制的に変更して、別のユーザーからデータを取得できますか? または、( password 以外の) 大量のデータをセッション変数に設定しても問題ありませんか?

乾杯、それが理にかなっていることを願っています..要約すると:

ログインしているユーザーのユーザー ID をセッション Cookie に設定できますか? また、誰かが Cookie を変更して、ユーザー ID を推測して somoene else データを表示しようとする方法はありますか?

乾杯ジョン

4

1 に答える 1

0

セキュリティ ルール 1 - 独自の認証およびセッション管理スキームを実装しないでください。プラットフォーム/フレームワークの標準実装に常に依存するようにしてください。

あなたのシナリオでは、セッション Cookie は信頼されていないデータです (つまり、攻撃者はサーバーに戻る途中でそれを変更できます)。セッション ID が推測しやすい場合 (増分整数など)、この ID を変更してシステム内の別のユーザーになることは簡単です (セッション ハイジャック)。

独自のメカニズムを使用する必要がある場合は、次の点を考慮してください。 1. セッションに関連付けられた IP アドレスを追跡します。別の IP アドレスからの要求が表示された場合にどうするかを考えてください。2. 推測しにくいセッション ID/トークンを使用します。たとえば、整数を使用しないでください - GUID を使用してください。セッション ID を整数として使用する必要がある場合は、このセッション ID に関連付けられたある種の GUID を導入し、それをセッション ID と共にサーバー側に保存し、クライアント側で Cookie に保存します。これら 2 つの値は常に一致する必要があります。そうでない場合、リクエストは本物ではありません。

于 2012-06-10T09:34:38.063 に答える