>백엔드 개발 >PHP 튜토리얼 >로그인 상태를 저장하기 위해 보다 안전한 쿠키를 설정하는 방법은 무엇입니까?

로그인 상태를 저장하기 위해 보다 안전한 쿠키를 설정하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-10-10 11:55:561093검색

주로 두 가지 상황에 해당:

  1. 사용자가 쿠키를 크랙함

  2. 악의적인 사용자가 쿠키를 탈취하여 로그인을 가장합니다

사용자의 로그인 상태를 기억하고 비교적 안전하도록 쿠키를 설정하는 방법은 무엇입니까?

답글 내용:

주로 두 가지 상황에 해당:

  1. 사용자가 쿠키를 크랙함

  2. 악의적인 사용자가 쿠키를 탈취하여 로그인을 가장합니다

사용자의 로그인 상태를 기억하고 비교적 안전하도록 쿠키를 설정하는 방법은 무엇입니까?

세션에 답변해주신 친구들, 질문자는 분명 로그인 상태를 저장해 두었다가 다음에 방문할 때 자동으로 로그인할 수 있기를 바라는 것 같아요. 세션에 대해 언급했는데 다음 문제를 해결하는 방법은 무엇입니까?

  • 세션 시간 초과를 계산하는 방법은 무엇입니까?

  • SessionID도 쿠키에 저장되어야 합니다.

주제에 대한 질문:

  1. 암호화는 AES 암호화로 충분합니다. 구체적인 암호화/복호화는 @eechen의 https://segmentfault.com/q/10을 참조하세요.

  2. XSS 주입을 방지하고 쿠키를 얻습니다.
    httponly이면 충분합니다. session_id와 로그인 상태 모두 httponly가 필요합니다. JavaScript는 httponly 속성이 있는 쿠키를 얻을 수 없습니다

PHP의 기본 session_id는 httponly가 아니므로 laravel은 세션의 모든 로직을 구현하고 데이터베이스, 파일, Redis 및 기타 드라이버를 지원합니다.

세션

서버측에 세션을 저장하는 것이 비교적 안전합니다.

user_identity|expires_timestamp과 같은 쿠키 형식은 인코딩이 필요한 부분을 암호화합니다.
확인된 경우 암호를 해독하고 확인하세요.

js가 쿠키에 액세스하지 못하도록 httponly를 설정
HTTPS를 사용하여 중간자 공격 방지

사용자가 로그인하면 암호화된 문자열 인증 토큰 토큰이 생성되어 쿠키에 저장됩니다. 다음에는 쿠키가 열려서 토큰이 유효한지 확인합니다.

<code>1. 用户将Cookie进行破解

对于这种情况,可以考虑的是加密的复杂度,以及校验逻辑的升级。比如,将访问时间、客户端IP这些东西都作为Cookie 加密的一部分,增加破解难度。</code>
<code>2. 恶意用户劫持Cookie冒充登陆

因为Cookie 的加密是结合了客户端的IP 信息的。所以,即使Cookie被用到其他的机器来访问,但是IP 本身也是不匹配的,验证无法通过。

同时,我们还可以考虑在服务端,SESSION 存储该Cookie 的信息,用来跟上传信息进行比对,检验cookie信息是否有被篡改过。</code>

그 사이에 다양한 방법이 있는데, 어느 수준까지 고려해야 하는지 분석하면 됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.