스승님, 저는 쿠키와 세션 메커니즘에 대해 명확히 이해한 적이 없습니다. 배울 수 있는 좋은 정보가 있나요?
스승님, 저는 쿠키와 세션 메커니즘에 대해 명확히 이해한 적이 없습니다. 배울 수 있는 좋은 정보가 있나요?
실제로 질문을 가지고 검색 엔진에 가면 많은 답변을 얻을 수 있습니다.
쿠키와 세션은 어떤 문제를 해결합니까? 실제로 이 두 가지 문제를 이해한 후에는 어떻게 해야 할까요? 작동 메커니즘을 보시면 자연스럽게 이해가 되실 겁니다.
쿠키와 세션은 어떤 문제를 해결하나요?
은 상태 비저장(이전 요청과 다음 요청이 동일한 사용자로부터 온 것인지 식별할 수 없음)이라는 http 프로토콜의 본질적인 결함을 보완합니다.
값을 저장하고, 클라이언트가 요청할 때마다 이를 쿠키를 통해 전송하며, 서버는 이를 구별할 수 있습니다. 동일한 사용자로부터 요청이 왔습니다.
key=>value
key
key
위 내용은 단순히 쿠키와 세션의 메커니즘에 대한 답변입니다. 구체적인 답변은 이 두 가지 질문으로 검색하시면 됩니다.
구현 원칙을 이해하기 전에 먼저 둘의 역할을 구분하세요.
쿠키 - 브라우저에 존재하는 캐시된 데이터 유형으로, 브라우저(설정)에서 끌 수 있습니다. 브라우저가 쿠키를 끄면 쿠키를 사용할 수 없습니다. 요즘에는 일반적으로 아무도 쿠키를 끄지 않습니다.
쿠키는 브라우저에서 발생하므로
기본적으로 누구나 쿠키를 변경할 수 있습니다. 안전합니까? 물론 안전하지 않습니다. 그렇다면 이때 어떻게 하면 안전할까요? 예외 없이 Session을 이용해 주시기 바랍니다.
세션(Session) - 이름에서 알 수 있듯이 "세션"은 서버에 저장되며, 이용자의 브라우저에 저장되는 쿠키와는 다릅니다. 그리고 이는 쿠키를 기반으로 합니다. 쿠키가 유효하지 않으면 세션이 제대로 작동하지 않습니다. 세션은 Session_id를 쿠키에 넣기 때문입니다. 웹사이트 서버와 통신할 때마다 서버측 프로그래밍 언어는 쿠키에서 session_id를 얻고 서버에 저장된 세션 데이터를 읽을 수 있습니다. session_id는 매우 중요한 것입니다. 쿠키가 꺼진 후에도 세션을 계속 유용하게 사용하려면 어떻게 해야 합니까? 각 요청에는 session_id를 제공하는 kv가 헤더에 포함되어 있습니다. . . 블라블라블라. . . 아직 이것을 배울 필요는 없다고 생각합니다. 그것은 단지 여담 일뿐입니다.
쿠키 - 사용자가 현재 사용하는 브라우저에 데이터가 저장됨(브라우저를 변경하면 이전 쿠키가 사라짐), 보안이 취약함
다음으로 쿠키와 세션을 어떻게 사용하나요? 당신은 그것을 배울 수 있습니다.
세션은 쿠키를 기반으로 구현하거나 매개변수를 가져올 수 있지만 안전하지는 않습니다.
세션과 쿠키의 관계를 대략적으로 이해하려면 MySQL 메모리 테이블을 사용하여 세션 저장소를 구현하는 다음 예를 살펴보세요.
데이터베이스를 기반으로 맞춤형 쿠키 세션 메커니즘을 구현합니다.
<code>CREATE TABLE sessions ( user_id int(10) unsigned NOT NULL, session text NOT NULL, md5 char(32) NOT NULL, PRIMARY KEY (user_id) ) ENGINE=MEMORY DEFAULT CHARSET=utf8; 其中: user_id存储的是用户ID,作为主键. session存储的是用户的会话数组经过serialize或json_encode后的字符串. md5存储的是session字段的MD5值,用于实现Check And Set版本号乐观锁: --读取会话 SELECT session, md5 --写入会话时需要用到这里查出来的md5,就是下面的$last_md5 FROM sessions WHERE user_id = $user_id --写入会话 UPDATE sessions SET session = $str, md5 = md5($str) WHERE user_id = $user_id AND md5 = $last_md5 --检查MD5,确保session字段没有被修改过</code>