🍪 쿠키를 통한 정보 노출 - 실습 시뮬레이터

CWE-315: Cleartext Storage of Sensitive Information in a Cookie

✅ 학습 진행도
  • 진단 시작
  • 평문 저장 제거
  • 암호화 적용
✏️ Java 코드 에디터 취약한 코드
CookieManager.java
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

public void setAuthCookie(HttpServletResponse response, String password) {
    // [취약점] 비밀번호를 평문으로 쿠키에 저장
    // 공격자가 쿠키를 탈취하면 비밀번호가 그대로 노출됨
    Cookie c = new Cookie("pwd", password);
    c.setMaxAge(3600); // 1시간 동안 하드디스크에 저장
    response.addCookie(c);
}
💡 수정 가이드
1. 암호화 함수 사용

비밀번호를 그대로 저장하지 말고 암호화하여 저장하세요. (가상의 encrypt 함수 사용)

Cookie c = new Cookie("pwd", encrypt(password));
📊 분석 결과
🎯 목표

쿠키는 클라이언트 측에 저장되므로 민감 정보를 평문으로 저장해서는 안 됩니다. 정보를 암호화하거나, 세션 ID와 같은 참조값만 저장하도록 수정하세요.

✅ 학습 진행도
  • 진단 시작
  • 평문 저장 제거
  • HttpOnly/Secure 설정
🐍 Python 코드 에디터 취약한 코드
views.py
from django.http import HttpResponse

def login_view(request):
    response = HttpResponse("Logged in")
    # [취약점] 민감 정보 평문 저장 및 보안 플래그 누락
    response.set_cookie('user_token', 'SECRET_KEY_12345')
    return response
💡 수정 가이드
1. 보안 플래그 추가

httponly=True와 secure=True를 설정하여 XSS 및 네트워크 스니핑으로부터 보호하세요.

response.set_cookie('token', '...', httponly=True, secure=True)
📊 분석 결과
🎯 목표

Django에서 쿠키를 설정할 때 보안 속성을 빠뜨리면 정보가 쉽게 노출됩니다. HttpOnly와 Secure 플래그를 추가하여 안전하게 만드세요.