>  기사  >  시스템 튜토리얼  >  "비밀번호 기억" 기능의 숨겨진 위험성

"비밀번호 기억" 기능의 숨겨진 위험성

王林
王林앞으로
2024-02-08 08:33:09743검색

비밀번호 기억 기능의 숨겨진 위험성

이렇게 하면 모든 기기와 클라이언트에 로그인할 수 있으며, 여러 사용자가 동시에 로그인할 수 있습니다. 이것은 매우 안전하지 않습니다. 참고할 수 있는 더 안전한 방법은 다음과 같습니다.

1 쿠키에는 사용자 이름, 로그인 순서, 로그인 토큰 세 가지를 저장합니다.

a) Username: 일반 텍스트로 저장됩니다.
b) 로그인 시퀀스: MD5에 의해 해시된 난수로, 사용자가 비밀번호를 강제로 입력해야 하는 경우에만 업데이트됩니다(예: 사용자가 비밀번호를 변경하는 경우).
c) 로그인 토큰: MD5로 해시된 임의의 숫자로, 한 번의 로그인 세션 내에서만 유효합니다.

2 위 세 가지 사항은 서버에 저장됩니다. 서버의 인증된 사용자는 클라이언트 쿠키에서 이 세 가지 사항을 확인해야 합니다.
3 그러한 디자인은 어떤 효과를 갖게 될까요?

a) 로그인 토큰은 단일 인스턴스 로그인입니다. 즉, 사용자는 로그인 인스턴스를 하나만 가질 수 있습니다.

b) 로그인 시퀀스는 사기 탐지에 사용됩니다. 사용자의 쿠키가 도난당하고 도둑이 이 쿠키를 사용하여 웹사이트에 액세스하는 경우 당사 시스템은 해당 사용자를 합법적인 사용자로 간주한 후 "로그인 토큰"을 업데이트합니다. 그러나 실제 사용자가 다시 방문하면 시스템은 "user" 이름만 있다는 것을 알게 됩니다. "는 "login 순서"와 동일하지만 "login token"이 잘못되었습니다. 이 경우 시스템은 이 사용자가 따라서 시스템은 로그인 순서로그인 토큰을 삭제하고 변경할 수 있으며, 이로 인해 모든 쿠키가 무효화되고 사용자에게 비밀번호를 입력해야 합니다. 그리고 사용자에게 시스템 보안에 대해 경고합니다.

4 물론 위 디자인에는 여전히 문제가 있습니다

예: 동일한 사용자가 다른 장치에서 로그인하거나 심지어 다른 브라우저를 사용하여 동일한 장치에 로그인합니다. 한 장치에서 다른 장치의 로그인 토큰로그인 시퀀스을 무효화하면 다른 장치와 브라우저에서 다시 로그인해야 하며 쿠키가 도난당한 것처럼 착각하게 됩니다. 따라서 서버의 IP 주소도 고려해야 합니다. 다음 세 가지 문제가 관련됩니다.

a) 비밀번호로 로그인하는 경우 서버의 "로그인 순서" 및 "로그인 토큰"을 업데이트할 필요가 없습니다(단, 쿠키는 업데이트해야 함). 실제 사용자만이 비밀번호를 알고 있다고 믿기 때문입니다.

b) IP가 동일인 경우 서버의 “로그인 순서” 및 “로그인 토큰”을 업데이트할 필요가 없습니다(단, 쿠키는 업데이트해야 함). 동일한 사용자가 동일한 IP를 가지고 있다고 생각하기 때문입니다(물론 동일한 LAN도 동일한 IP를 가지고 있지만 이 LAN은 사용자가 제어할 수 있다고 생각합니다. 피씨방에서는 이 기능을 권장하지 않습니다).

c) (IP가 다르고&& 로그인에 비밀번호가 사용되지 않음)인 경우 "로그인 토큰"이 여러 IP 간에 변경됩니다(로그인 토큰이 두 개 이상의 IP 간에 반환되고 반환됨). 특정 기간 내에 특정 횟수에 도달하면 시스템은 도난 가능성이 매우 높다고 느낄 것입니다. 이때 시스템은 "로그인 시퀀스" 및 "로그인 토큰"을 삭제합니다. "를 백그라운드에서 실행하여 쿠키를 무효화합니다. , 사용자에게 비밀번호를 입력하도록 강제(또는 사용자에게 비밀번호 변경을 요구)하여 여러 기기의 쿠키가 일관되게 유지되도록 합니다.

저는 이것이 좋은 해결책이라고 생각합니다. 쿠키 도난의 환상은 "자멸적인" 방식으로 실현될 수도 있습니다. QQ에 나중에 로그인한 사용자가 이전에 로그인한 사용자를 몰아냅니다.

위 내용은 "비밀번호 기억" 기능의 숨겨진 위험성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제