๐ Cookie ?
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ data ๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ์์ ํฌ๊ธฐ์ ๋ฌธ์์ด์ ๋งํ๋ค.
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ cookie ๋ฅผ ์ ์กํ ์๋ ์๊ณ ,
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก cookie ๋ฅผ ์ ์กํ ์๋ ์๋ค.
-> cookie ๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ํ ๋ ๋ถ๋ฌ์ ๋ค์ ์ฌ์ฉํ ์ ์๋ค.
โพ Cookie ํ์
<cookie_name>=<cookie_value>
์ฟ ํค๋ name=value ์์ผ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
๐ Cookie Options ?
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ cookie ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฑด ๋ง๋๋ก ํ ์ ์์ง๋ง
์ญ์ผ๋ก ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ค์ ๋ถ๋ฌ์ค๋ ๊ฑด, ์ง์ ๋ ์กฐ๊ฑด์ ๋ง์กฑํ ๋๋ง ๊ฐ๋ฅํ๋ค.
cookie์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด์ ์ํ๋ ์กฐ๊ฑด์ ์ง์ ํด์ค ์ ์๋ค ( ์กฐ๊ฑด ์ค์ ์ option์ ).
โ Expires=<date>
์ ํจ ์ผ์ option.
expires option ์ด ์ง์ ๋์ด ์์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ ๋ cookie ๊ฐ ์ญ์ ๋๋ค. (Default)
: Expires=Sun, 21 July 2030 02:35:10 GMT
expires option ์ ์ค์ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์๋ ์ฟ ํค๊ฐ ์ญ์ ๋์ง ์๋๋ค.
( ๋ฌผ๋ก ์ ํจ ์ผ์๋ฅผ ์์ฃผ ์งง๊ฒ ์ค์ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ๊ธฐ ์ ์๋ cookie๋ ์ญ์ ๋๋ค. )
// cookie์ ์ ํจ ์ผ์๋ ๋ฐ๋์ GMT(Greenwich Mean Time) ํฌ๋งท์ผ๋ก ์ค์ ํด์ผ ํ๋ค.
// date.toUTCString ์ ์ฌ์ฉํ๋ฉด GMTํฌ๋งท์ผ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ค.
// ์ ํจ ๊ธฐ๊ฐ์ด ํ๋ฃจ์ธ cookie ์ค์
let date = new Date(Date.now() + 86400e3);
date = date.toUTCString();
document.cookie = 'user=Peter; expires=' + date;
โ Max-Age=<number>
๋ง๋ฃ ๊ธฐ๊ฐ option.
max-age option ์ด ์ง์ ๋์ด ์์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ซํ ๋ cookie ๊ฐ ์ญ์ ๋๋ค. (Default)
: Max-Age=3600
max-age option ์ expires option ๋์ cookie ๋ง๋ฃ ๊ธฐ๊ฐ์ ์ด ๋จ์๋ก ์ค์ ํ ์ ์๋ค.
cookie ์ ๋ ๋ค ์ง์ ๋์์ ๋, expires ๋ณด๋ค max-age ๊ฐ ์ฐ์ ์๋๋ค.
( 0 ์ด๋ ์์๊ฐ์ ์ค์ ํ๋ฉด cookie ๋ ๋ฐ๋ก ์ญ์ ๋๋ค. )
// 1์๊ฐ ๋ค์ cookie ์ญ์
document.cookie = 'user=Peter; max-age=3600';
// cookie ๋ฐ๋ก ์ญ์
document.cookie = 'user=Peter; max-age=0';
โ Domain=<domain-value>
cookie ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ๋๋ฉ์ธ์ ์ง์ ํ๋ option.
domain option ์ด ์ง์ ๋์ด ์์ง ์์ผ๋ฉด ํ์ฌ ๋ฌธ์์ URI ๋ง cookie ์ ์ ๊ทผํ ์ ์๋ค.
-> ์ด๋ ๊ฒ๋๋ฉด ํ์ฌ URI์ ํ์ URI ๊ฒฉ์ธ ์๋ธ ๋๋ฉ์ธ์ cookie ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
-> ex. site.com(๋ฉ์ธ ๋๋ฉ์ธ) : cookie ์ ๊ทผ O / kind.site.com(์๋ธ ๋๋ฉ์ธ) : cookie ์ ๊ทผ X
: Domain=site.com
: Domain=.site.com
domain option ์ ์ค์ ํ๊ฒ ๋๋ฉด ์ค์ ํ ๋๋ฉ์ธ์ ๋ฌผ๋ก ์ด๊ณ ์๋ธ ๋๋ฉ์ธ๊น์ง cookie ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
// site.com ์์ cookie ์ค์
// kind.site.com์์๋ cookie์ ์ ๊ทผํ ์ ์์
document.cookie = 'user=Peter';
// site.com ์์ cookie ์ค์
// kind.site.com์์๋ cookie์ ์ ๊ทผํ ์ ์์
document.cookie = 'user=Peter; domain=site.com';
โ Path=<path-value>
cookie ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ URL path ๋ฅผ ์ง์ ํ๋ option.
path option ์ด ์ง์ ๋์ด์์ง ์์ผ๋ฉด ํ์ฌ ๊ฒฝ๋ก๊ฐ ์ค์ ๋๊ณ ํ์ฌ ๋ฌธ์์ URI ๋ง cookie ์ ์ ๊ทผํ ์ ์๋ค.
: Path=/mypath
path option ์ ์ค์ ํ๊ฒ ๋๋ฉด ์ด ๊ฒฝ๋ก๋ ํ์ ๊ฒฝ๋ก์ ์๋ ํ์ด์ง๋ง cookie ์ ์ ๊ทผํ ์ ์๋ค.
-> path=/mypath ์ต์ ์ cookie ์ ์ค์ ํ๋ฉด /mypath ๋ /mypath/something ์ cookie ์ ์ ๊ทผํ ์ ์์ง๋ง
-> /home ์ด๋ /mypage ์์๋ cookie์ ์ ๊ทผํ ์ ์๋ค !
// ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์น ์ฌ์ดํธ์ ๋ชจ๋ ํ์ด์ง์์ ์ฟ ํค์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค.
document.cookie = 'user=Peter; path=/'
โ Secure
HTTP๋ก ํต์ ํ๋ ๊ฒฝ์ฐ์ cookie ์ ๊ทผ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ option.
๊ธฐ๋ณธ์ ์ผ๋ก cookie ๋ ๋๋ฉ์ธ๋ง ํ์ธํ๋ค. ํ๋กํ ์ฝ์ ๋ฐ์ง์ง ์๋๋ค.
secure option ์ด ์ง์ ๋์ด ์์ง ์์ผ๋ฉด HTTP, HTTPS ํ๋กํ ์ฝ ๋ชจ๋ ์๋ฐฉ์ผ๋ก cookie ์ ์ ๊ทผํ ์ ์๋ค.
: Secure
secure option ์ ์ค์ ํ๊ฒ ๋๋ฉด HTTPS ์์ ์ค์ ๋ cookie ๋ HTTP ์์ ์ ๊ทผํ์ง ๋ชปํ๋ค.
HTTPS ๋ก ํต์ ํ๋ ๊ฒฝ์ฐ์๋ง cookie ์ ๊ทผ ํ์ฉํ๊ณ ์ถ์ ๋ secure option ์ ์ค์ ํ๋ฉด ๋๋ค.
// ๋ณด์ ๊ฐํ !
document.cookie = 'user=Peter; secure';
โ HttpOnly
ํด๋ผ์ด์ธํธ ์ธก์์ Script ๋ฌธ์๊ฐ cookie ๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํ๋ option. ( set-cookie ์์ฑ์ผ๋ก ๋ฃ์ด์ฃผ๋ฉด ok )
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด๊ฐ document.cookie ๋ฅผ ํตํด ์ฟ ํค๋ฅผ ์ฝ๊ฑฐ๋ ์กฐ์ํ ์ ์๊ฒ ์ฐจ๋จํ๋ค.
ํด์ปค๊ฐ ์ ์ฑ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ด์ง์ ์ฝ์ ํ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ณด์ ์ด์ ( XSS )๋ฅผ ๋ง๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
: HttpOnly
๋ณดํต cookie ์ค์ ํ ๋ ์ด ์ต์ ์ ๊ผญ ๋ฃ์ด์ค๋ค. ( ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๊ณ ์์ผ !! )
๐ XSS ๊ณต๊ฒฉ
2021.11.24 - [the others/Network Security] - Cross-Site Scripting ( XSS ) ๊ณต๊ฒฉ
โ SameSite
'Front-end > Browser' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Babel ๊ณผ Babel ์ด ํ์ํ ์ด์ (0) | 2022.04.03 |
---|---|
์ฃผ์์ฐฝ์ URL (www.google.co.kr) ์ ์ ๋ ฅํ๋ฉด ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๋์ ? (0) | 2022.03.04 |
Preflight Request : HTTP Message ๋ฅผ ํตํ header ๊ณต๋ถ (0) | 2021.10.27 |
์ง์ ์๋ฒ๋ฅผ ๋ง๋ค๋ฉด์ ๋ฐฐ์ด Location Header (0) | 2021.10.26 |
Simple Request : HTTP Message ๋ฅผ ํตํ header ๊ณต๋ถ (0) | 2021.10.22 |
๋๊ธ