카테고리 없음

Django_ 해시, 쿠키, 세션

멍주다배 2025. 1. 17.

웹 보안의 기본 원칙: 쿠키, 세션, 해시, (JWT)

웹 애플리케이션 개발에서 보안은 매우 중요한 부분입니다.

쿠키, 세션, 해시, JWT는 웹 보안을 위해 함께 사용되는 핵심 기술입니다.  서로 보완하며 웹 보안을 더욱 강화합니다.

사용자의 정보를 안전하게 관리하고 인증된 사용자에게만 서비스를 제공해야 신뢰성을 얻을 수 있습니다.

 

"cㅜ키는 cㄹ라이언트, sㅔ션은 sㅓ버에 저장"

클라이언트가 서버(웹)에 요청을 보냄 -> 서버는 세션 ID를 만듦 -> 세션 ID와 함께 쿠키한테 전달

쿠키가 다음에 요청을 할 때는 세션 ID를 함께 서버에 보내줌

 

쿠키(cookie): 웹 애플리케이션의 작은 기억 장치

  • 세션 ID를 저장하여 세션을 유지하는 데 사용
  • 특정 사용자 구별
  • 사용자 상태 저장 (로그인 상태나 장바구니 정보)
    • 광고 - 마우스, 키보드 등이 요청 정보에 담겨있네? 컴퓨터 관련 광고를 같이 보내자
  • 클라이언트(브라우저)에 저장
    • +) 사용자 직접 관리 가능 - 사용자 설정, 테마 선택 등을 저장
    • -) 보안상 취약,  비교적 작은 용량의 데이터만 저장 가능
  • 만료 시간 설정 가능 (세션 쿠키, 영구 쿠키)

 

세션(session): 웹 서버의 사용자 관리 시스템

  • 사용자 데이터를 서버에 저장함
  • 쿠키보다 보안이 좋음
    • 쿠키말고 세션에 정보를 저장하자
    • 민감한 정보나 정보를 계속 저장해야하는 것을 세션 ID로 만들기
  • 서버 자원을 소모
    • 자원 관리 생각해야 함
  • 쿠키를 사용해 세션 ID를 클라이언트와 주고받고 그러면서 유지됨

 

해시(hash): 데이터 무결성 및 비밀번호 보호의 핵심

  • 평문에서 암호문으로 바꿔주기
  • 고정된 길이 제시
  • 단방향 함수
    • 해시 값으로 원본 데이터를 복원할 수 없음
  • 비밀번호 확인 로직
    • 데이터 베이스의 암호문 값 == 로그인 시도할 때 입력한 패스워드를 암호문으로 변경한 값
  • 솔트: 해시 함수에 무작위 값을 추가하여 해시 공격을 방어하는 데 사용
  • 데이터가 변경되었는지 여부(무결성) 확인
    • 데이터의 고유성을 보장
    • 보안이 필요한 부분에 활용
  •