java - Spring MVC 로그인 시스템 설계에 대하여
天蓬老师
天蓬老师 2017-05-17 10:08:17
0
4
581

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

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

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

보충제

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

天蓬老师
天蓬老师

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

모든 응답(4)
滿天的星座

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

계획을 따르세요:
1, 쿠키의 uid를 암호화로 설정하거나 의미 없는 임의의 문자열
2, 이 문자열을 사용하여 db 또는 캐시와 비교하고 보안 강화를 위해 IP 또는 사용자 에이전트를 동시에 확인
3, 세션 만료 정책을 고려

我想大声告诉你

먼저 데이터베이스에 사용자 정보를 저장하고 설정해야 합니다isLogined 默认为FALSE,每次登陆成功后更新为TRUE,退出后更新为FALSE;判断登陆成功的标志用userName userPass 匹配,还有isLogined 判断;最后设置判断级别,先isLogined用户密码;

Ty80

로그인 상태는 적어도 관계형 데이터베이스에는 저장하지 않는 것이 좋습니다. 토큰은 사용자 로그인 확인이 완료된 후 반환될 수 있으며 모든 후속 사용자 요청은 인증 필드에 이 토큰을 포함합니다. 헤더에 대해 자세히 알아볼 수 있습니다. jwt 및 관련 구현을 살펴보겠습니다

过去多啦不再A梦

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


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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿