답글 내용:
Php의 세션과 쿠키에 대해서는 이야기하지 않겠습니다. 일반 웹에 어떤 세션과 쿠키가 있는지 살펴보겠습니다.
쿠키는 실제로 브라우저 측의 기술입니다. HTTP 자체는 상태 비저장이므로 일반적으로 서버는 매번 누가 요청하는지 알 수 없습니다. 따라서 웹 세션에서는 HTTP 헤더의 set-cookie를 통해 클라이언트에 일부 콘텐츠를 임시로 저장할 수 있습니다. 이 세션에는 현재 쿠키의 내용이 함께 제공됩니다(쿠키가 비활성화된 경우에는 전송되지 않습니다). 여기의 세션은 일반적으로 도메인 이름으로 정의됩니다.
그러나 쿠키에는 두 가지 큰 결함이 있습니다. 1. 쿠키는 클라이언트 측에 저장되므로 쿠키를 읽고, 유용하고, 수정할 수 있습니다. 즉, 로그인 정보 등 중요한 정보가 쿠키를 이용해 저장되어 있으면 다른 사람이 이를 마음대로 읽고, 삭제하고, 수정할 수 있다는 의미입니다. 2. 다른 위장 사이트에서 귀하의 쿠키 콘텐츠를 직접 얻을 수도 있습니다.
그렇다면 클라이언트가 쿠키를 마음대로 삭제하고 다른 사용자를 위장하기 어렵게 하려면 이 정보에 어떻게 접근해야 할까요? 일반적으로 방법에는 두 가지 주요 범주가 있습니다. 1. 쿠키를 암호화합니다. 2. 자체 확인이 포함된 서명만 쿠키에 저장한 다음 키 데이터를 서버 측에 저장합니다. 이것이 세션입니다.
세션은 쿠키의 적용입니다. 클라이언트에 저장된 암호화 세션은 구현하기 가장 쉽고 서버에 추가 저장 부담을 주지 않습니다. 많은 새로운 마이크로 프레임워크의 세션은 이러한 방식으로 구현됩니다(서버에 저장되지 않습니다). 두 번째는 서버에 저장하는 것입니다. 선택적 저장 위치에는 메모리, 파일, 외부 데이터베이스 등이 포함되지만 이에 국한되지는 않습니다.
PHP에는 자체 라이브러리가 있습니다. 쿠키는 클라이언트측에 저장해야 하는 쿠키를 응답에 추가하는 것을 의미합니다. 세션은 쿠키에 session_id를 추가한 다음 저장해야 하는 항목을 저장하는 것을 의미합니다. 기본적으로 파일 형태의 서버입니다.
그런데 최신 브라우저는 일반적으로 localStorage를 지원합니다. 첫째, 프런트 엔드를 통해 액세스할 수 있지만 백엔드에서는 사용할 수 없습니다. 둘째, 저장 용량이 훨씬 커질 수 있습니다. 셋째, 저사양 크롤러를 방지하는 특정 기능이 있습니다. 기존 브라우저와의 호환성을 고려할 필요가 없다면 localStorage + 프런트엔드, 백엔드 분리를 사용하고, localStorage 내용(session_id 또는 암호화된 저장소 내용)을 ajax 형태로 js를 통해 반환하여 쿠키를 대체하는 것이 더 좋습니다. .
쿠키는 클라이언트에 데이터를 저장하는 역할
세션은 서버 측에 데이터를 저장하는 역할, 클라이언트는 하나의 ID만 저장
1층은 아주 좋다고 하더군요.
실제로 가장 큰 차이점은 쿠키가 클라이언트 측에 존재하고 세션이 서버 측에 존재한다는 것입니다. 일반적으로 세션은 쿠키의 세션 ID에 따라 달라집니다. 실제로 세션 ID를 직접 설정한 다음 세션을 사용할 때 세션 ID를 지정할 수도 있습니다. 세션 ID의 기능은 세션에 저장된 파일을 지정하는 것이므로 쿠키가 비활성화된 후에도 이 트릭을 사용할 수 있습니다.
한 가지 더 중요한 점은 분산 아키텍처에서는 세션을 주의해서 사용해야 한다는 것입니다. 세션 데이터가 손실될 수 있기 때문입니다. 물론 세션이 캐시나 데이터베이스에 저장되도록 세션을 다시 작성할 수도 있습니다.
이렇게 이해하시면 됩니다. 쿠키는 남의 상자이고, 세션은 자신의 상자입니다. 이 상자의 장점은 무엇인가요? 무언가를 저장하세요