>백엔드 개발 >PHP 튜토리얼 >쿠키와 세션의 연관성과 차이점은 무엇입니까?

쿠키와 세션의 연관성과 차이점은 무엇입니까?

一个新手
一个新手원래의
2017-09-09 13:40:114191검색

http 프로토콜은 상태 비저장이지만 온라인 쇼핑과 같이 많은 응용 프로그램에서는 서버가 클라이언트의 상태를 마스터해야 합니다. 이때 쿠키와 세션이 제 역할을 합니다.

쿠키와 세션의 차이점과 연결

cookie메커니즘 사용된 솔루션은 client의 상태를 유지하는 반면, session 메커니즘은 서버의 상태를 유지하는 솔루션을 채택합니다. 그러나 서버 측의 상태를 유지하는 솔루션도 필요합니다. 클라이언트에 ID를 저장하기 위해 세션 메커니즘 ID 저장 목적을 달성하려면 쿠키 메커니즘을 사용해야 할 수도 있지만 실제로는 다른 옵션이 있습니다

쿠키 메커니즘

  • 쿠키 기술
    세션 추적을 위해 사용자의 로컬 터미널에 저장된 데이터(보통 암호화됨)

  • cookie 구성 요소

    1. http 응답 메시지의 쿠키 헤더 라인
    2. http 요청 메시지의 쿠키 헤더 라인. 클라이언트 호스트에 저장된 파일은 브라우저에서 관리됩니다.
    4. 웹 서버 측 백엔드 데이터베이스

  • 쿠키의 원리


    쿠키와 세션의 연관성과 차이점은 무엇입니까?

쿠키 배포는 http 프로토콜을 확장하여 이루어지며, 서버는 추가를 통과합니다. 지침에 따라 해당 쿠키를 생성하도록 브라우저에 메시지를 표시하는 http 응답 헤더에 대한 특수 지침 라인이 있지만 주의해야 할 사항이 한 가지 있습니다. javascript 또는 vbscript와 같은 순수 클라이언트 측 스크립트도 쿠키를 생성할 수 있으므로 잠재적인 보안 위험이 있습니다.

쿠키 사용은 특정 원칙에 따라 브라우저에 의해 백그라운드에서 서버로 자동 전송됩니다. 브라우저는 모든 쿠키를 확인하며, 선언된 쿠키의 범위가 요청하려는 리소스의 위치보다 큰 경우 쿠키는 요청된 리소스의 http 헤더에 첨부되어 서버로 전송됩니다. : 이름, 값, 만료 시간, 경로 및 도메인, 경로 및 도메인이 함께 쿠키의 범위를 구성합니다. 만료 시간이 설정되지 않은 경우 이는 브라우저 창의 경우 이 쿠키의 수명 주기가 지속됨을 의미합니다. 닫히면 쿠키가 사라집니다. 수명 주기가 세션인 이러한 유형의 쿠키를 세션 쿠키라고 합니다. 일반적으로 하드 디스크에 저장되지 않고 메모리에 저장됩니다. 만료 시간이 설정되면 브라우저는 쿠키를 하드 디스크에 저장하며, 브라우저를 닫았다가 다시 연 후에도 해당 쿠키는 설정된 만료 시간이 초과될 때까지 계속 유효합니다. 서로 다른 브라우저 프로세스 공유

세션 메커니즘

웹 개발에서 서버는 각 사용자의 브라우저에 대해 세션 개체(세션 개체)를 생성할 수 있습니다. 참고: 하나의 브라우저는 기본적으로 하나의 세션 개체를 독점적으로 소유합니다. 따라서 사용자 데이터를 저장해야 하는 경우 서버 프로그램은 사용자 브라우저 전용 세션에 사용자 데이터를 쓸 수 있습니다. 사용자가 브라우저를 사용하여 다른 프로그램에 액세스하면 다른 프로그램이 사용자 세션에서 사용자 데이터를 검색할 수 있습니다. 사용자 서비스.

세션은 서버 측 메커니즘입니다. 서버는 정보를 저장하기 위해 해시 테이블과 유사한 구조를 사용합니다. 프로그램이 클라이언트 요청에 대한 세션을 생성해야 할 때 서버는 먼저 클라이언트의 요청에 이미 세션이 포함되어 있는지 확인합니다. ID(sessionid라고 함).

포함되어 있으면 이전에 이 클라이언트에 대한 세션이 생성되었다는 의미입니다. 서버는 세션 ID에 따라 이 세션을 검색하여 사용합니다. 검색할 수 없는 경우 새 세션을 생성합니다.

클라이언트 요청에 세션 ID가 포함되어 있지 않은 경우 클라이언트에 대한 세션을 생성하고 이 세션과 연결된 세션 ID를 생성하세요. 세션 ID 값은 위조가 쉽지 않은 고유하고 불규칙한 문자열이어야 합니다. 이 응답에 저장하기 위해 세션 ID가 클라이언트에 반환됩니다.

쿠키를 사용하여 이 세션 ID를 저장할 수 있습니다. 그러면 상호 작용 프로세스 중에 브라우저가 규칙에 따라 이 ID를 서버에 자동으로 보낼 수 있습니다. 일반적으로 이 쿠키의 이름은 SESSIONID와 유사하지만 쿠키가 인위적으로 비활성화될 수 있으므로 쿠키가 비활성화된 경우에도 세션 ID가 서버에 계속 전송될 수 있도록 다른 메커니즘이 있어야 합니다

일반적으로 사용되는 기술을

이라고 합니다. URL 재작성

은 세션 ID를 URL 경로 끝에 직접 추가하는 것입니다.

Form Hidden Fields라는 기술도 있습니다. 즉, 서버는 자동으로 양식을 수정하고 숨겨진 필드를 추가하여 양식이 제출될 때 세션 ID가 서버로 전송될 수 있도록 합니다. 예:

<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form>
요약하면 차이점은 다음과 같이 요약할 수 있습니다.

쿠키 데이터는 고객의 브라우저에 저장되고, 세션 데이터는 서버에 저장됩니다.
  • 쿠키는 로컬에 저장된 쿠키를 분석하여 쿠키 스푸핑을 할 수 있으므로 중요한 정보는 저장하는 것이 좋습니다. 세션 내 로그인 정보 등 기타 정보를 유지해야 하는 경우 쿠키에 저장될 수 있습니다.
  • 세션은 방문 횟수가 증가하면 일정 시간 동안 서버에 저장됩니다. 더 많은 서버 성능
  • 단일 쿠키에 의해 저장되는 데이터는 4K를 초과할 수 없습니다. 많은 브라우저는 최대 20개의 쿠키를 저장하도록 사이트를 제한합니다.

http 프로토콜은 상태 비저장이지만 많은 애플리케이션에서는 서버가 클라이언트 상태를 마스터해야 합니다. , 온라인 쇼핑 등 쿠키와 세션이 그 역할을 합니다

위 내용은 쿠키와 세션의 연관성과 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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