๋ฌด์ํ์ธ HTTP ํต์ ์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๊ธฐ์ตํ๊ณ ๊ตฌ๋ถํ๋ ค๋ ์ฉ๋๋ก ์ฌ์ฉ
ํด๋ผ๊ฐ ์๋ฒ์ ์ด๋ค ์์ฒญ์ ๋ณด๋ โ ์๋ฒ๋ ํด๋ผ์ ์๋ต ์ ์ฟ ํค ์ ๋ณด๋ฅผ ํฌํจํด ์๋ต โ ํด๋ผ๋ ์๋ต๋ฐ์ ๊ฐ์ ์ฟ ํค๊ฐ ์์ผ๋ฉด ์์ ์ ๊ธฐ์ต ์ฅ์น์ ์ ์ฅ โ ์์ฒญ์ ๋ณด๋ผ ๋ ์ ์ฅํ๋ ์ฟ ํค๋ฅผ ๋ฃ์ด ์ ์ก โ ์๋ฒ๋ ์์ฒญ์ ํฌํจ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ๋ณด๊ณ ํด๋ผ์ด์ธํธ ์๋ณ โ ํด๋ผ์ ์ฃผ๊ณ ๋ฐ์ ๊ณผ๊ฑฐ ํต์ ๋ด์ญ์ ๋ํ ์ผ๋ถ ๋ฐ์ดํฐ ์ ์ฅ
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์๋ต์ ๋ณด๋ผ ๋ Set-Cookie๋ผ๋ ํค๋ ์ ๋ณด ์ ์ก
Set-Cookie: <์ฟ ํค_์ด๋ฆ>:<์ฟ ํค_๊ฐ>
const app = require('express')();
app.get('/', (req, res) => {
res.setHeader('Set-Cookie', [username='hihi']);
res.sendFile(`${_dirname}/index.html`);
});
app.listen(8080, () => console.log('listening on port :8080'));
์ฟ ํค ์์ฑ: ์ด๋ค ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฐ์ ์๋ต ํค๋์ ์ผ๋ถ์ set-cookie ๊ฐ์ผ๋ก ํฌํจ๋ ์ฟ ํค ์ ๋ณด๋ค
-
์ฟ ํค ๋ง๋ฃ ์๊ฐ (expries, max-age)
expires=Wed, 3 Sep 2023 09:00:00 GMT โ ๋ ์ง ๋ช ์ max-age=3600 โ ๊ธฐ๊ฐ ๋ช ์
-
์ฟ ํค ๋ฒ์ (domain, path)
domain=example.com: example.com ๋๋ฉ์ธ๊ณผ ์๋ธ ๋๋ฉ์ธ์์ ์ ๊ทผ ๊ฐ๋ฅ
path=/mypage โ mypage ๊ฒฝ๋ก์ ๊ทธ ํ์ ๊ฒฝ๋ก( ex: /mypage/profile )์์ ์ ๊ทผ ๊ฐ๋ฅ
-
์ฟ ํค ๋ณด์ (secure)
๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ฟ ํค๋ก ์ ๋ฌํด์ผํ ๋ secure ์์ฑ์ผ๋ก ์ง์ (HTTPS๋ฅผ ์ฌ์ฉํ ๋๋ง ์ ์ก)
-
XSS ๊ณต๊ฒฉ ๋ฐฉ์ง (HttpOnly)
์ฟ ํค๋ฅผ ํ์ทจํ๋ ์ ์ฑ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ: XSS (์ฌ์ดํธ ๊ฐ ์คํธ๋ฆฝํ )
โ HttpOnly ์์ฑ์ ์ฌ์ฉํด ํด๋ผ๊ฐ ์ฟ ํค์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํจ
-
CSRF ๊ณต๊ฒฉ ๋ฐฉ์ง (samesite)
ํด์ปค๊ฐ ์ฟ ํค๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ: CSRF (์ฌ์ดํธ ๊ฐ ์์ฒญ ์์กฐ)
โ samesite๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด์ ์์ฑ์ธ strict, lax, none ์ค ํ๋๋ฅผ ์ง์
-
samesite์ ์์ฑ
strict: ๋ค๋ฅธ ์ฌ์ดํธ๋ก ์ฟ ํค ์ ์ก ๊ฐ๋ฅ
lax: ์์ ํ http ๋ฉ์๋, ์์ ์ด ์ต์์ ๊ฒฝ๋ก์์ ์ด๋ค์ง๋ ๊ฒฝ์ฐ ์ ์ธํ๊ณ ๋ฐ์ ์ฌ์ดํธ๋ก ์ฟ ํค ์ ์ก ๋ถ๊ฐ
none: ํ ์ฌ์ดํธ๋ก ์ฟ ํค ์ ์ก ๊ฐ๋ฅ (์ด ์ต์ ์ฌ์ฉํ๋ฉด ์๋)
-
์ฟ ํค๋ณด๋ค ๋ณด์๊ด์ ๋ ์์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ธ์ ์ฌ์ฉ
ํด๋ผ๊ฐ ์๋ฒ์ ์ด๋ค ์์ฒญ์ ๋ณด๋ โ ์๋ฒ๋ ๋ฌด์์๋ก ์์ฑํ ๊ณ ์ ์ธ์ ID๋ฅผ ์๋ต ๋ฉ์์ง์ Set-Cookie ํค๋ ์ ๋ณด์ ํฌํจํด ์ ๋ฌ โ ํด๋ผ๋ ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋๋ง๋ค ์๋ต๋ฐ์ ์ธ์ ID ํฌํจํด ๋ณด๋ โ ์๋ฒ๋ ํด๋ผ์ ์์ฒญ ๋ฉ์์ง์ ์๋ ์ธ์ ID๋ฅผ ๋ณด๊ณ ์ ํจํ์ง ํ์ธ ํ ์์ฒญ ์ฒ๋ฆฌ
์น๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ํด๋ผ๊ฐ ์ข ๋ฃ๋๋ฉด ์ฆ์ ์ญ์ ์๋ก์ด ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ์ธ์ ID๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ฒ์๋ถํฐ ๋ค์ ์ํ