웹 보안의 기본 원칙: 쿠키, 세션, 해시, (JWT)
웹 애플리케이션 개발에서 보안은 매우 중요한 부분입니다.
쿠키, 세션, 해시, JWT는 웹 보안을 위해 함께 사용되는 핵심 기술입니다. 서로 보완하며 웹 보안을 더욱 강화합니다.
사용자의 정보를 안전하게 관리하고 인증된 사용자에게만 서비스를 제공해야 신뢰성을 얻을 수 있습니다.
"cㅜ키는 cㄹ라이언트, sㅔ션은 sㅓ버에 저장"
클라이언트가 서버(웹)에 요청을 보냄 -> 서버는 세션 ID를 만듦 -> 세션 ID와 함께 쿠키한테 전달
쿠키가 다음에 요청을 할 때는 세션 ID를 함께 서버에 보내줌
쿠키(cookie): 웹 애플리케이션의 작은 기억 장치
- 세션 ID를 저장하여 세션을 유지하는 데 사용
- 특정 사용자 구별
- 사용자 상태 저장 (로그인 상태나 장바구니 정보)
- 광고 - 마우스, 키보드 등이 요청 정보에 담겨있네? 컴퓨터 관련 광고를 같이 보내자
- 클라이언트(브라우저)에 저장
- +) 사용자 직접 관리 가능 - 사용자 설정, 테마 선택 등을 저장
- -) 보안상 취약, 비교적 작은 용량의 데이터만 저장 가능
- 만료 시간 설정 가능 (세션 쿠키, 영구 쿠키)
세션(session): 웹 서버의 사용자 관리 시스템
- 사용자 데이터를 서버에 저장함
- 쿠키보다 보안이 좋음
- 쿠키말고 세션에 정보를 저장하자
- 민감한 정보나 정보를 계속 저장해야하는 것을 세션 ID로 만들기
- 서버 자원을 소모
- 자원 관리 생각해야 함
- 쿠키를 사용해 세션 ID를 클라이언트와 주고받고 그러면서 유지됨
해시(hash): 데이터 무결성 및 비밀번호 보호의 핵심
- 평문에서 암호문으로 바꿔주기
- 고정된 길이 제시
- 단방향 함수
- 해시 값으로 원본 데이터를 복원할 수 없음
- 비밀번호 확인 로직
- 데이터 베이스의 암호문 값 == 로그인 시도할 때 입력한 패스워드를 암호문으로 변경한 값
- 솔트: 해시 함수에 무작위 값을 추가하여 해시 공격을 방어하는 데 사용
- 데이터가 변경되었는지 여부(무결성) 확인
- 데이터의 고유성을 보장
- 보안이 필요한 부분에 활용