세션과 쿠키의 차이점
세션과 쿠키의 주요 차이점
- 세션은 사용자 정보가 포함된 서버측 파일이고, 쿠키는 사용자 정보가 포함된 클라이언트측 파일입니다.
- 세션은 쿠키에 의존하지만 쿠키는 세션에 의존하지 않습니다.
- 세션은 사용자가 브라우저를 닫으면 종료되는 반면, 쿠키는 설정된 수명에 따라 만료됩니다.
- 세션에는 원하는 만큼 많은 데이터를 저장할 수 있지만 쿠키의 데이터 저장 공간은 4KB에 불과합니다.
- 세션 내의 모든 등록된 데이터는 Session_destroy() 명령을 사용하여 파괴될 수 있습니다. 그러나 쿠키에서 데이터를 제거하는 unsetcookie()와 같은 명령은 없습니다.
여기에서는 다음과 같은 차이점을 분석했습니다. 세션 및 쿠키 장단점을 종합적으로 평가할 것입니다.
세션이란 무엇입니까?
세션은 서버에 저장된 전역 변수입니다. 각 세션에는 고유한 ID가 할당되며, 이 ID는 저장된 값을 검색하는 데 사용됩니다. 세션이 생성될 때마다 고유한 세션 ID가 포함된 쿠키가 사용자의 컴퓨터에 저장되고 서버에 대한 모든 요청과 함께 반환됩니다. 클라이언트 브라우저가 쿠키를 지원하지 않으면 고유한 세션 ID가 URL에 표시됩니다. 세션은 쿠키에 비해 비교적 많은 양의 데이터를 저장할 수 있는 용량이 있습니다.
브라우저를 닫으면 세션 값이 자동으로 삭제됩니다. 값을 영구적으로 저장하려면 다음 위치에 저장해야 합니다. 데이터베이스.
$_COOKIE 배열 변수와 마찬가지로 세션 변수도 $_SESSION 배열 변수에 저장됩니다. 쿠키와 마찬가지로 세션은 HTML 태그보다 먼저 시작되어야 합니다.
세션을 왜, 언제 사용해야 합니까?
세션은 한 페이지에서 다른 페이지로 값을 전달하는 데 사용됩니다. 사용자 ID와 같은 중요한 정보를 악의적인 사용자가 변조할 수 없는 서버에 보다 안전하게 저장합니다.
또한 쿠키를 지원하지 않는 브라우저에서 쿠키 대신 효율적이고 안전한 방법으로 전역 변수를 저장하려는 경우에도 사용됩니다. URL로 전달하거나 4KB 이상의 용량으로 정보를 일시적으로 저장하는 장바구니 등의 애플리케이션을 개발할 때보다 좋습니다.
PHP로 세션 만들기
세션을 시작하려면 PHP에서 session_start 함수를 시작한 다음 $_SESSION 슈퍼전역 배열에 값을 저장해야 합니다.
페이지 방문 빈도를 추적하려는 시나리오를 고려하십시오. 세션을 활용하는 것은 이러한 목적에 효과적인 방법입니다.
다음 예제는 세션에서 값을 설정하고 액세스하는 방법을 보여줍니다.
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>출력:
You are visitor number 1
세션의 장점
내 관점에서 세션의 장점은 다음과 같습니다.
- 여러 요청에 걸쳐 지속적인 대화 상태를 유지하여 사용자 상호 작용을 향상합니다.
- 사용자 데이터를 임시로 저장하여 서버 부하를 줄입니다.
- 제한된 기간 동안 데이터 노출을 제어하여 보안을 향상합니다.
- 사용자 행동과 선호도에 따라 개인화된 경험을 제공합니다.
- 여러 단계를 추적하여 복잡한 거래를 용이하게 해줍니다.
- 재인증 필요성을 최소화하여 웹사이트 성능을 향상시킵니다.
- 분산 시스템 전체에서 사용자 세션을 효과적으로 관리하여 확장성을 지원합니다.
세션의 단점
내 경험상 이것이 세션 사용의 단점입니다.
- 세션 데이터를 가로채는 경우 데이터 침해 위험이 높아집니다.
- 서버 메모리를 소비하므로 전체 시스템 성능이 저하될 수 있습니다.
- 부적절하게 관리하면 일관되지 않은 사용자 경험을 초래할 수 있습니다.
- 세션을 유지하고 모니터링하려면 추가 서버 리소스가 필요합니다.
- 세션 만료로 인해 사용자 활동이 중단되어 좌절감을 느낄 수 있습니다.
- 세션 하이재킹 및 고정 공격에 취약합니다.
- 지속적인 데이터 저장으로 인해 개인 정보 보호 규정 준수가 복잡해질 수 있습니다.
쿠키 란 무엇인가?
쿠키는 웹서버가 클라이언트 컴퓨터에 저장하는 최대 크기 4KB의 작은 파일입니다. 쿠키가 설정되면 이후의 모든 페이지 요청은 쿠키 이름과 값을 반환합니다. 쿠키는 쿠키가 발행된 도메인에서만 읽을 수 있습니다. 예를 들어 www.guru99.com 도메인을 사용하는 쿠키 세트는 Career.guru99.com 도메인에서 읽을 수 없습니다. 인터넷상의 대부분의 웹사이트는 광고와 같은 다른 도메인의 요소를 표시합니다. 이러한 요소를 제공하는 도메인은 자체 쿠키를 설정할 수도 있습니다. 이를 제XNUMX자 쿠키라고 합니다. 사용자가 생성한 쿠키는 해당 사용자만 볼 수 있습니다. 다른 사용자는 해당 값을 볼 수 없습니다. 최대 웹 브라우저 쿠키, 제3자 쿠키 또는 둘 다를 비활성화하는 옵션이 있습니다.
쿠키를 왜, 언제 사용해야 합니까?
HTTP는 상태 비저장 프로토콜입니다. 쿠키를 사용하면 사용자 컴퓨터에 저장된 작은 파일을 사용하여 애플리케이션 상태를 추적할 수 있습니다. 쿠키가 저장되는 경로는 브라우저에 따라 다릅니다. Internet Explorer는 일반적으로 Temporal Internet Files 폴더에 저장합니다.
사용자 경험 개인화: 이는 사용자가 선호 사항을 선택할 수 있도록 허용함으로써 달성됩니다. 다음 페이지 요청은 쿠키에 설정된 선호 사항을 기반으로 개인화됩니다. 사용자가 방문한 페이지 추적.
PHP로 쿠키 만들기
이제 쿠키 생성에 필요한 기본 구문을 살펴보겠습니다.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
- PHP에서는 setcookie 기능 쿠키를 생성하는 데 사용됩니다. "cookie_name"은 쿠키의 식별자를 나타내며 서버가 $_COOKIE 배열에서 쿠키 값을 가져와야 할 때 서버에 필수적입니다. 이 이름은 필수입니다.
- "cookie_value"는 쿠키의 내용을 나타내며 필수 항목입니다.
- "[expiry_time]" 매개변수는 선택사항이며 1시간 후에 만료되도록 설정하는 것과 같이 쿠키의 수명을 지정하도록 설정할 수 있습니다. 이는 PHP time() 함수에서 초를 더하거나 빼서 수행됩니다(예: 3600시간을 설정하려면 time() + 1).
- "[cookie_path]"는 쿠키에 액세스할 수 있는 서버 경로를 결정하는 또 다른 선택적 매개변수입니다. 슬래시("/")를 사용하면 쿠키가 전체 도메인에서 사용 가능함을 의미하는 반면, 하위 디렉터리를 지정하면 해당 하위 도메인에 대한 액세스가 제한됩니다.
- 선택 사항인 "[도메인]" 매개변수는 쿠키에 액세스할 수 있는 위치를 설정합니다. 예를 들어 다음과 같이 설정합니다.
www.cookiedomain.com
전체 도메인에서 사용할 수 있게 해주는 반면,www.sub.cookiedomain.com
해당 하위 도메인과 하위 하위 도메인으로 제한됩니다. 도메인의 총 길이가 253자를 초과하지 않는 한 하위 도메인은 자체 하위 도메인을 가질 수도 있습니다. - "[secure]" 매개변수는 선택사항이며 기본 설정은 false입니다. 쿠키가 HTTPS(true인 경우) 또는 HTTP(false인 경우)를 통해 전송되어야 하는지 여부를 지정합니다.
- “[Httponly]” 설정도 선택 사항입니다. true로 설정하면 다음과 같은 클라이언트측 스크립트 언어로 쿠키에 액세스할 수 없습니다. Java스크립트 .
참고 : HTML 태그가 출력되기 전에 PHP setcookie 함수를 호출해야 합니다.
쿠키와 관련된 실제적인 예를 고려해 보겠습니다.
이 경우, 10초 후에 만료되도록 설정된 쿠키에 사용자 이름을 저장하는 간단한 프로그램을 개발하겠습니다.
다음 “cookies.php” 코드는 이를 구현하는 방법을 보여줍니다.
<?php setcookie("user_name", "Guru99", time() + 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>출력:
the cookie has been set for 60 seconds
쿠키의 장점
제 경험상 장단점은 이렇습니다 쿠키:
- 맛 발견 시 놀라움의 요소를 강화합니다.
- 미니멀한 미학을 제공하여 현대적인 브랜딩에 이상적입니다.
- 포장이 복잡해지지 않아 제품에 집중할 수 있습니다.
- 성분 선호도나 브랜드 인식에 따른 편견을 제거합니다.
- 선입견 없이 시음하도록 장려하여 편견 없는 피드백을 이끌어냅니다.
- 포장 인쇄 비용을 잠재적으로 낮춰줍니다.
- 덜 엄격한 라벨링 법률이 적용되는 시장의 규제 준수를 단순화합니다.
쿠키의 단점
제가 본 바에 따르면 쿠키의 단점은 다음과 같습니다.
- 고객은 알레르기 유발 물질이나 식이 제한 사항을 확인할 수 없습니다.
- 건강을 의식하는 소비자에게 중요한 영양 정보가 부족합니다.
- 독특하거나 프리미엄한 재료를 강조할 기회를 놓친다.
- 진열대에 있는 유사한 제품끼리 혼동을 일으킬 수 있습니다.
- 브랜드 인지도 및 충성도 구축을 방지합니다.
- 정보에 입각한 소비자 의사결정을 방해합니다.
- 이로 인해 라벨링 법률이 엄격한 지역에서는 법적 문제가 발생할 수 있습니다.
세션과 쿠키: 차이점
제가 실제로 관찰한 세션과 쿠키의 중요한 차이점은 다음과 같습니다.
세션은 사용자 정보가 포함된 서버측 파일입니다. |
쿠키는 사용자 정보가 포함된 클라이언트측 파일입니다. |
사용자가 브라우저를 닫으면 세션이 종료됩니다. |
쿠키는 설정한 수명에 따라 종료됩니다. |
In PHP, $_SESSION을 사용하기 전에 session_start()를 작성해야 합니다. 다른 언어도 마찬가지입니다. |
쿠키는 로컬 컴퓨터에 저장되어 있으므로 쿠키를 시작할 필요가 없습니다. |
세션 내에서 원하는 만큼의 데이터를 저장할 수 있습니다. 도달할 수 있는 유일한 제한은 스크립트가 한 번에 사용할 수 있는 최대 메모리(기본적으로 128MB)입니다. |
공식적인 최대 쿠키 크기는 4KB입니다. |
세션은 쿠키에 의존합니다 |
쿠키는 세션에 종속되지 않습니다. |
Session_destroy()는 등록된 모든 데이터를 삭제하거나 일부 설정을 해제하는 데 사용됩니다. |
unsetcookie()라는 함수가 없습니다. |
결론
데이터 보안 및 용량 요구 사항이 쿠키가 제공할 수 있는 수준을 초과하는 경우 세션을 사용하는 것이 좋습니다. 그러나 쿠키는 사용 편의성과 가볍고 지속적인 사용자 상태 추적 구현 측면에서 타의 추종을 불허합니다.