java - Spring MVC ログイン システムの設計について
天蓬老师
天蓬老师 2017-05-17 10:08:17
0
4
578

私の現在のアイデアは、uidusernamepasswordisLogined# を含む User オブジェクトを定義することです。 ##待って。次に、interceptor を設定します。ユーザーが最初のリクエストを行う (セッションが開始する) と、データベースからの user.isLogined に基づいてユーザーがログインしているかどうかが判断されます。 isLogined を true に設定すると、ログイン ページにリダイレクトされます。

しかしこの場合、ユーザーが最初のリクエストを行ったときにユーザーの ID をどのように判断すればよいでしょうか?

uid が Cookie に設定されている場合、その uid は他人によって偽造される可能性があり、潜在的なセキュリティ リスクが生じます。

この問題に対する良い解決策はありますか?

補充

私の主な問題は、ユーザーのログイン ID の正当性をどのように判断するかです。今の私のアイデアは、ユーザー ID を暗号化して Cookie に保存することです。このキーを知っているのは私だけなので、たとえ他の人がユーザー ID を知っていたとしても、彼らはそれはわかりませんが、これが合理的かどうかお聞きしたいと思います。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(4)
滿天的星座

このリスクは非常に大きいです。uid が他の人のものに変更され、その人がたまたまログインしている場合、別の人としてログインすることになります

計画に従ってください:
1. 暗号化する Cookie の uid または意味のないランダムな文字列を設定します。
2. この文字列を使用してデータベースと比較するか、キャッシュと比較し、同時に IP を検証します。ユーザーエージェントによるセキュリティ強化
3、セッション有効期限ポリシーの検討

いいねを押す +0
我想大声告诉你

まず、ユーザー情報をデータベースに保存して設定する必要がありますisLogined 默认为FALSE,每次登陆成功后更新为TRUE,退出后更新为FALSE;判断登陆成功的标志用userName userPass 匹配,还有isLogined 判断;最后设置判断级别,先isLogined用户密码

いいねを押す +0
Ty80

ログイン ステータスをデータベースに保存しないこと、少なくともリレーショナル データベースには保存しないことをお勧めします。トークンはユーザーのログイン検証が完了した後に返され、後続のすべてのユーザー リクエストで認証フィールドにこのトークンが含まれます。ヘッダーの詳細については、jwt と関連する実装を見てみましょう

いいねを押す +0
过去多啦不再A梦

現在の方法によると、私がログインしていない匿名ユーザーであり、インターフェースの1つを要求し、データベースからインターセプトされて、user.isLoginedに基づいてユーザーがログインしているかどうかを判断すると、問題が発生します。 。 user.isLogined のユーザーは誰ですか?


リクエストするときは、セッションを検証するためにインターセプタを使用するだけで、リクエストごとにデータベースにアクセスするため、ユーザーのログイン成功情報を入れることをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート