单点登录ticket在redis中存储问题
世界只因有你
世界只因有你 2017-04-24 16:00:16
0
5
927

用户通过在单点登录服务器登陆,登录成功后,单点登录服务器分配给该用户一个ticket。然后单点登录服务器将该ticket做为key,用户名做为value,存储在redis中。通过判断该key是否是有效的来判断该用户会话有效。
后续会有服务通过向单点登录服务器发送一个ticket来验证该ticket是否有效,来判断该用户是否登录了。
但是这样会有个问题,某个用户肯能不停的登录,这样单点登录服务器每次都会将该ticket存储在redis中,虽然该ticket有过期时间,但有可能在短时间内在redis中写入大量的ticket。
不知这个有什么好的解决方法吗?

世界只因有你
世界只因有你

모든 응답(5)
PHPzhong

만약 인터페이스가 악의적으로 호출되었다는 것이면 DDOS 보호에 속하므로 내 대답은 해당되지 않습니다.
실제로 이 기능을 수행한 사람이라면 누구나 귀하의 문제에 직면하게 될 것입니다. 사용자가 로그인했다고 판단되면 쿠키 및 세션을 사용하기 위해 특별히 수행되지 않은 상황입니다. 다른 브라우저, 쿠키 및 세션으로 로그인하는 것은 쓸모가 없습니다.
그때 제가 한 일은 redis에서 또 다른 관계인 username-->ticket을 유지하여 사용자 이름을 기반으로 이전 티켓을 찾을 수 있도록 하고, 사용자가 반복적으로 로그인했는지 여부를 판단할 수 있도록 하는 것이었습니다.

phpcn_u1582

먼저 답변해 드리겠습니다. 로그인 시 인증번호를 추가하시면 기기 로그인이 더 어려워집니다. 이것도 하나의 방법인데 다른 방법이 있는지 궁금합니다.

某草草

로그인 후 티켓은 사용자 측에서 기록되거나 세션 또는 쿠키를 사용해야 합니다. 그런 다음 로그아웃할 때 서버가 티켓을 가져와서 지울 수도 있습니다. 마지막 티켓을 가져와서 여부를 결정합니다. 또 다른 파기 방법은 사용자 ID를 키 값으로 사용하여 티켓을 저장하는 것입니다

Peter_Zhu

짧은 시간 안에 논스톱으로 로그인을 하게 되면 수동으로 하는 작업이라면 redis가 버티지 못하니 안심하셔도 됩니다.

DDoS 공격인 경우 외부(라우터, 방화벽, HTTP 서버 또는 애플리케이션)에 보호 정책을 추가해야 합니다.

애플리케이션에서는 이러한 "비정상적인 로그인" 동작을 어떻게 정의할 것인지에 따라 다릅니다. 예를 들어 짧은 시간 동안의 로그인을 비교할 수 있고(시간 간격을 사용자 정의할 수 있음) 소스가 일치하는지 여부가 있습니다. (예를 들어, 사용자가 지구에서 5초 이내에 로그인합니다. 10개의 다른 곳에서 로그인합니다.) 비정상적인 로그인 동작을 판단한 후 애플리케이션의 민감도(계정 금지 또는 IP 차단)에 따라 처리 방법을 결정할 수 있습니다. ? 증거를 수집하고 경찰에 신고하세요:-)

淡淡烟草味

이미 로그인했는데 왜 다시 로그인시키려는 건가요? 로직에 문제가 있나요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!