0Pricing
PHP Academy · 강의

쿠키 보안: HttpOnly 및 Secure 플래그

HttpOnly, Secure, SameSite 속성으로 쿠키를 보호합니다.

쿠키 보안: HttpOnly 및 Secure 플래그은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

HttpOnly 플래그

쿠키에 HttpOnly 플래그가 있으면 JavaScript가 document.cookie를 통해 쿠키에 접근할 수 없으므로 XSS를 이용한 세션 탈취를 방지할 수 있습니다.

HttpOnly와 Secure 설정

깔끔하고 읽기 쉬운 코드를 작성하려면 옵션 배열 형식(PHP 7.3 이상)을 사용합니다.

<?php
setcookie("session_id", $id, [
    "expires"  => time() + 3600,
    "path"     => "/",
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
]);

Secure 플래그

Secure 쿠키는 HTTPS를 통해서만 전송됩니다. HTTP 연결에서는 브라우저가 쿠키를 제외하므로 평문 HTTP를 통한 가로채기를 방지합니다.

SameSite 속성

SameSite는 사이트 간 요청에 쿠키를 언제 전송할지 제어합니다:

  • Strict — 동일 사이트 요청에만 전송
  • Lax — 동일 사이트 요청 및 최상위 수준 탐색에 전송
  • None — 사이트 간 요청에 전송(Secure 필요)

SameSite와 CSRF

SameSite를 Strict 또는 Lax로 설정하면 위조된 사이트 간 POST 요청에 세션 쿠키가 전송되지 않으므로 CSRF를 완화할 수 있습니다.

php.ini 세션 쿠키 설정

실행 중에 기본 세션 쿠키 보안을 구성합니다:

<?php
ini_set("session.cookie_httponly", "1");
ini_set("session.cookie_secure",   "1");
ini_set("session.cookie_samesite", "Lax");
session_start();

쿠키 접두사

브라우저는 쿠키 이름의 접두사를 다음과 같이 처리합니다:

  • __Secure- — 쿠키에 Secure 플래그가 있어야 함
  • __Host- — Secure와 Path=/가 있어야 하며 Domain 속성이 없어야 함

쿠키 접두사 예제

__Host- 접두사를 사용하여 쿠키를 정확한 호스트에 연결합니다.

<?php
setcookie("__Host-session", $token, [
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
    "path"     => "/",
]);

DevTools에서 플래그 검토

브라우저의 DevTools → Application → Cookies에서 다음을 확인합니다: HttpOnly가 선택되어 있고, Secure가 선택되어 있으며, SameSite가 Strict 또는 Lax로 표시되는지 확인합니다.

HttpOnly가 없을 때

XSS를 통해 주입된 악성 스크립트는 document.cookie를 실행하여 세션 ID를 읽고 공격자에게 전송할 수 있습니다. 그러면 계정을 탈취당할 수 있습니다.

Secure가 없을 때

HTTP와 HTTPS가 혼합된 사이트에서는 세션 쿠키가 HTTP를 통해 평문으로 전송됩니다. 네트워크 도청자가 쿠키를 훔칠 수 있습니다.

요약

항상 세션 및 인증 쿠키에 HttpOnly와 Secure를 설정합니다. SameSite=Strict 또는 Lax를 추가합니다. setcookie()의 옵션 배열 형식을 사용합니다.

빠른 확인

JavaScript가 쿠키를 읽지 못하게 하는 플래그는 무엇인가요?

자주 묻는 질문

“쿠키 보안: HttpOnly 및 Secure 플래그” 강의는 무료인가요?

네 — “쿠키 보안: HttpOnly 및 Secure 플래그” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“쿠키 보안: HttpOnly 및 Secure 플래그”에서 뭘 배우나요?

HttpOnly, Secure, SameSite 속성으로 쿠키를 보호합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“쿠키 보안: HttpOnly 및 Secure 플래그” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 세션 시작 및 사용
  2. 세션 보안 모범 사례
  3. 쿠키 설정 및 읽기
  4. 쿠키 보안: HttpOnly 및 Secure 플래그
← PHP Academy(으)로 돌아가기