일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- AES
- docker error
- 하이브리드암호화
- fk컬럼 삭제
- 하이브리드 암호화
- spring
- jenkins git ignore file 추가
- rsa 복호화
- 플러터
- 스왑 메모리
- 내도메인 한국
- swap file
- XSS 예방
- aws
- jstl dependency
- springboot 배포
- aws lightsail 배포
- Docker
- Flutter
- 제약조건 제거
- rsa java
- RSA
- git
- jstl 종류
- 세션쿠키
- springboot3 jstl
- lightsail 도메인 연결
- aws lightsail
- 지속쿠키
- Stored Procedure log
- Today
- Total
easycode
세션쿠키와 지속쿠키의 차이점 (feat.cookie secure) 본문
CS를 공부하던 중 쿠키의 종류에 대해 간단히 알아 보았던 걸 기록으로 남겨 보려 합니다. 요약본 같은 느낌이라 자세하지 않을 수 있습니다. 제일 아래에 있는 참고사이트를 보시면 좀더 이해하기 쉽습니다. 누군가에게 도움이 되길 바랍니다.
세션쿠키
- 만료 날짜/시간을 지정하지 않으면 세션 쿠키
- 브라우저 메모리에 저장, 현재 세션이 끝날 때 삭제된다.
- 브라우저는 "현재 세션"이 끝나는 시점을 정의하며 (ex : 브라우저가 닫히면 세션 종료), 어떤 브라우저들은 재시작할 때 세션을 복원해 세션 쿠키가 무기한 존재할 수 있도록 한다.
지속쿠키
- 만료 날짜/시간을 지정하면 지속 쿠키
- 파일로 저장되므로 브라우저가 종료되어도 쿠키는 남아있다.
- Expires 속성에 명시된 날짜에 삭제되거나, Max-age 속성에 명시된 기간 이후에 삭제된다. (삭제하는 건 자동으로 된다)
- expires: 쿠키만료될 날짜 지정
- Max-Age: 현재시간을 기준으로 얼마 동안 유지시킬것인지 지정한다.
→ 따라서 브라우저가 종료 되더라도 쿠키를 유지하고 싶다면 지속쿠키 사용
Secure
- Secure을 설정하면 쿠키는 HTTPS 프로토콜 상에서 암호화된 요청일 경우에만 전송된다. 하지만 Secure이더라도 민감한 정보는 절대 쿠키에 저장하면 안된다!!!
- 만약 Secure 설정 후 http와 같이 SSL접속이 아닌 곳에서 쿠키 사용하려고 하면 아래와 같은 오류가 뜬다.
This attempt to set a cookie via a Set-Cookie header was blocked because it has ”Secure" attribute but was not received over a secure connection.
- 크롬52 or 파이어폭스52를 사용하면 안전하지 않은 사이트(예 : http://)는 쿠키에 Secure 설정을 지시할 수 없다.
HttpOnly
- 크로스 사이트 스크립팅(XSS) 공격을 방지하기 위해, HttpOnly 쿠키는 JS의 Document.cookie API에 접근할 수 없도록 막아준다.
- HTTP Only Cookie를 사용하면 client에서 javascript를 통한 쿠키 탈취문제(cross-site scripting XSS)를 예방할 수 있다.
- 쿠키 생성할 때 `secure` 접미사 사용
- https가 아닌 통신에서는 쿠키가 전송되지 않는다!!!
Set-Cookie: 쿠키명 = 쿠키값; path=/; **secure**`
크로스 사이트 스크립팅이란?
2024.01.15 - [CS] - 크로스 사이트 스크립팅 (XSS)의 의미와 예방법(feat.innerText vs textContent)
참고사이트입니다. 더 자세하게 설명되어 있으니 보시는 걸 추천 드립니다.
1. 세션쿠키와 지속쿠키의 차이점 : https://velog.io/@software/%EC%84%B8%EC%85%98-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%A7%80%EC%86%8D-%EC%BF%A0%ED%82%A4
3. 쿠키와 로그인(HttpOnly와 Secure Cookie) : https://velog.io/@eeeve/HttpOnly%EC%99%80-Secure-Cookie
4. 서버와 브라우저가 서로를 기억하는 방법(세션과 쿠키) : https://velog.io/@jayone1202/%EC%84%9C%EB%B2%84%EC%99%80-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EA%B0%80-%EA%B8%B0%EC%96%B5%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95.-session-%EA%B3%BC-cookie
'CS' 카테고리의 다른 글
[자료구조] Map과 Map 컬렉션들(HashMap, HashTable, LinkedHashMap) (1) | 2024.02.27 |
---|---|
SQL Injection 설명과 예방법(Mybatis&JPA) (0) | 2024.01.16 |
크로스 사이트 스크립팅 (XSS)의 의미와 예방법(feat.innerText vs textContent) (2) | 2024.01.15 |
[CS] RESTful API란? (feat. REST API 명세서 작성 가이드) (0) | 2023.09.12 |