https://emn178.github.io/online-tools/sha256.html
암호화해야하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것
HTTP는 stateless한 특징을 갖는다. 이는 요청과 응답의 상태를 관리하지 않는다는 의미이다. 예를 들어 유저가 로그인을 했더라도 새로운 페이지로 이동하면 그때마다 다시 로그인을 해야한다. 따라서 HTTP의 무상태성을 보완하기 위한 방법이 바로 쿠키이다.
쿠키란, 서버가 일방적으로 브라우저에 저장하는 작은 데이터로, 해당 도메인에 대한 쿠키가 존재하면, 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다. 따라서 서버는 클라이언트에 대해 남긴 기록들(쿠키)를 보고 어느 클라이언트가 접속했는지 체크하고, 서버상의 기록을 확인해서 이전 상태를 알 수 있다.
요청(클라이언트) | 응답(서버) | |
---|---|---|
헤더필드 | set-cookie | cookie |
속성 | 설명 |
---|---|
NAME = VALUE | 쿠키에 부여된 이름과 값(필수) |
expires = DATE | 쿠키 유효기간(지정되지 않은 경우 브라우저를 닫을 때까지) |
path = PATH | 쿠키 적용 대상이 되는 서버 상의 디렉토리(지정하지 않은 경우는 도큐먼트와 같은 디렉토리) |
Domain=도메인 명 | 쿠키 적용 대상이 되는 도메인 명(지정하지 않은 경우는 쿠키를 생성한 서버의 도메인) |
secure = BOOLEAN | HTTPS로 통신하고 있는 경우에만 쿠키를 송신 |
httpOnly = BOOLEAN | 쿠키를 자바스크립트에서 액세스하지 못하도록 제한 |
sameSite = LAX, STRICT, NONE | CORS 요청의 경우 옵션 및 메소드에 따라 쿠키 전송 여부 결정 |
클라이언트에 정보를 저장하는 쿠키와 다르게, 세션은 데이터를 서버에 저장하고 쿠키에는 데이터에 대한 아이디만 암호화된 상태로 저장한다.
세션은 서버 메모리의 일정부분을 항상 차지하므로 가용메모리 용량이 줄어들어 서버 성능이 떨어질 수 있다.
기존 쿠키를 완전히 대체한 것이 아니라 여전히 쿠키를 사용하고 있으므로 쿠키가 httpOnly 요청이 없다면 XSS 요청에 취약한 것과 마찬가지로 XSS 공격으로 인한 쿠키 탈취가 일어날 수 있다.
참고