>  Q&A  >  본문

java - Spring MVC 로그인 시스템 설계에 대하여

현재 생각은 User对象,其中包括uid, username, password, isLogined等。然后设置一个拦截器,在用户第一次请求(session开始)的时候,从数据库中根据user.isLogined判断用户是否登录,如果登录了就在session级别上设置isLogined를 true로 정의하는 것입니다. 그렇지 않으면 로그인 페이지로 리디렉션됩니다.

그런데 이 경우 사용자가 처음 요청할 때 사용자의 신원을 어떻게 확인해야 하나요? 쿠키에 uid가 설정되어 있으면 이 uid는 다른 사람이 위조할 수 있어 잠재적인 보안 위험이 발생할 수 있습니다.

이 문제에 대한 좋은 해결책이 있나요?

보충제

저의 가장 큰 문제는 사용자의 로그인 ID의 적법성을 어떻게 판단할 것인가입니다. 이제 제 생각은 사용자 ID를 암호화하여 쿠키에 저장하는 것입니다. 사용자 ID입니다. 이것이 합리적인지 묻고 싶습니다.

天蓬老师天蓬老师2712일 전541

모든 응답(4)나는 대답할 것이다

  • 滿天的星座

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

    이 위험은 엄청납니다. uid가 다른 사람의 uid로 변경되고 해당 사람이 로그인되어 있으면 다른 사람으로 로그인됩니다

    계획을 따르세요:
    1, 쿠키의 uid를 암호화로 설정하거나 의미 없는 임의의 문자열
    2, 이 문자열을 사용하여 db 또는 캐시와 비교하고 보안 강화를 위해 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

    귀하의 현재 방법에 따르면, 제가 로그인하지 않은 익명 사용자이고 귀하의 인터페이스 중 하나를 요청한 다음 user.isLogined를 기반으로 데이터베이스에서 사용자가 로그인했는지 여부를 가로채서 판단한다면, 문제가 발생합니다. user.isLogined의 사용자는 누구입니까?


    직접 로그인한 후 세션에 사용자 로그인 성공 정보를 넣는 것이 좋습니다. 요청 시 인터셉터를 사용하여 세션을 확인하세요. 이 데이터베이스 액세스 작업은 요청마다 비용이 많이 듭니다. .

    회신하다
    0
  • 취소회신하다