HTTP 요청은 기본적으로 비연결성, 무상태 특성을 가지고 있습니다.
자세한 내용은 아래 링크 참고바랍니다.
https://velog.io/@skgyaos3/stateless-vs-stateful-%EC%B0%A8%EC%9D%B4
Client(browser)에 Key가 있는 문자열이 File로 Local에 저장했다가 참조하여 사용합니다. 하나의 Cookie는 4KB까지 저장이 가능하며 요청 시 Header에 Set-Cookie 속성을 사용하면 Client에서 Cookie를 만들 수 있습니다. 사용자는 별도의 요청하지 않아도 브라우저가 요청 시에 Header에 Cookie를 넣어서 자동으로 서버에 전송합니다.
File을 Client(browser)에 저장하는 Cookie와는 다르게 Session은 Server에서 관리합니다. Server에서는 Client를 구분하기 위해 Session ID를 할당하고, browser가 Server에 접속해서 browser를 종료할 때까지 인증상태를 유지할 수 있습니다. Server에서 관리하기에 Cookie보다 보안에 좋지만, 사용자가 많아질수록 Server Memory를 많이 차지하게 된다.
Client에 저장할 수 있는 Key-Value Storage 형태로 HTML5부터 추가된 저장소입니다. Cookie와는 다르게 자동으로 전송되는 위험이 없으며 Cookie보다 큰 저장 공간(5MB)을 가졌습니다. Domain단위로 접근이 제한되는 특성이 있어 CSRF로 부터 안전합니다. 사용자가 데이터를 지우지 않는 이상, browser나 OS를 종료해도 동일한 browser는 계속 남아있는 영속성을 가졌숩니다. browser의 자동로그인기능을 예시로 들 수 있습니다.
주의할 점은 저장된 데이터의 위협 수준이 매우 낮아야하며 쉽게 해킹되지 않도록 저장된 데이터를 암호화하는 것이 좋습니다.
CSRF
인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 수정, 삭제, 등록 등을 특정 웹사이트에 요청하게 만드는 공격
https://medium.com/gdana/localstorage-sessionstorage-cookie-cache-6ac9f776ab67
https://interconnection.tistory.com/74
https://erwinousy.medium.com/%EC%BF%A0%ED%82%A4-vs-%EB%A1%9C%EC%BB%AC%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-28b8db2ca7b2
https://ko.javascript.info/localstorage