이것을 살펴 보자 :
쿠키 와 세션 은 브라우저가 생성하는 서로 다른 요청간에 애플리케이션의 상태를 보존하는 두 가지 방법입니다. 예를 들어, StackOverflow 에서 페이지를 요청할 때마다 로그인 할 필요가 없다는 것은 그들 덕분입니다.
쿠키
쿠키는 키 = 값 쌍으로 데이터를 보유하는 작은 데이터 비트 (최대 길이 4KB)입니다.
name=value
이것은 JavaScript 또는 HTTP 헤더를 사용하는 서버를 통해 설정됩니다 .
쿠키에는 만료 날짜 시간이 설정되어 있습니다 (예 : HTTP 헤더 사용).
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
그러면 브라우저가 name2
값 이라는 이름의 쿠키를 설정하게 value2
되며 약 9 년 후에 만료됩니다.
쿠키는 사용자가 콘텐츠를 쉽게 조작 할 수 있으므로 매우 안전하지 않은 것으로 간주 됩니다. 그렇기 때문에 항상 쿠키 데이터의 유효성을 검사 해야 합니다 . 쿠키에서 얻는 것이 반드시 기대 한 것이라고 가정하지 마십시오.
쿠키는 일반적으로 브라우저에서 사용자 이름과 특수 해시가 전송되는 로그인 상태를 유지하는 데 사용되며 서버는 액세스를 승인하기 위해 데이터베이스에 대해 쿠키를 확인합니다.
쿠키는 세션 생성 에도 자주 사용됩니다 .
세션
세션은 약간 다릅니다. 각 사용자는 쿠키 또는 GET 변수에 의해 유효성 검사를 위해 서버로 다시 전송되는 세션 ID를 얻 습니다 .
세션은 일반적으로 수명이 짧기 때문에 응용 프로그램 간의 임시 상태를 저장하는 데 이상적입니다. 사용자가 브라우저를 닫으면 세션도 만료됩니다.
변수 자체가 서버에 유지되기 때문에 세션은 쿠키보다 더 안전한 것으로 간주됩니다 . 작동 방식은 다음과 같습니다.
- 서버가 세션을 엽니 다 (HTTP 헤더를 통해 쿠키 설정)
- 서버는 세션 변수를 설정합니다.
- 클라이언트 변경 페이지
- 클라이언트는 1 단계의 세션 ID와 함께 모든 쿠키를 보냅니다.
- 서버는 쿠키에서 세션 ID를 읽습니다.
- 서버는 데이터베이스 (또는 메모리 등)의 목록에서 세션 ID와 일치합니다.
- 서버가 일치하는 항목을 찾고 이제
$_SESSION
수퍼 글로벌에서 사용할 수있는 변수를 읽습니다 .
PHP가 일치하는 항목을 찾지 못하면 새 세션을 시작하고 1-7 단계를 반복합니다.
민감한 정보는 서버에 보관되기 때문에 세션에 저장할 수 있지만 사용자가 안전하지 않은 Wi-Fi를 통해 로그인 한 경우 세션 ID가 여전히 도난 당할 수 있습니다. (공격자는 쿠키를 스니핑하고 쿠키를 자신의 것으로 설정할 수 있으며, 변수 자체는 볼 수 없지만 서버는 공격자를 사용자로 식별합니다).
그게 요점입니다. 두 주제에 대한 PHP 매뉴얼에서 더 많은 것을 배울 수 있습니다.