쿠키 보안: 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 세션 시작 및 사용
- 세션 보안 모범 사례
- 쿠키 설정 및 읽기
- 쿠키 보안: HttpOnly 및 Secure 플래그