ホームページ  >  に質問  >  本文

java - Spring MVC ログイン システムの設計について

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

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

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

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

補充

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

天蓬老师天蓬老师2712日前540

全員に返信(4)返信します

  • 滿天的星座

    滿天的星座2017-05-17 10:10:17

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

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

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-17 10:10:17

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

    返事
    0
  • PHP中文网

    PHP中文网2017-05-17 10:10:17

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

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-17 10:10:17

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


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

    返事
    0
  • キャンセル返事