๋ก๊ทธ์ธ ํ ๋ค์ ๋ก๊ทธ์์๋ ๋: ์ฟ ํค์ DomainยทPathยทSecure๋ฅผ ํ์ธํ๋ ์์
1. ๋ก๊ทธ์ธ ์ฑ๊ณต ํ๋ฉด๋ง์ผ๋ก๋ ๋ถ์กฑํฉ๋๋ค
๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ๊ณ ์ฑ๊ณต ๋ฉ์์ง๋ ๋์๋๋ฐ ๋ค์ ํ์ด์ง์์๋ ๋นํ์์ผ๋ก ํ์๋ ์ ์์ต๋๋ค. ์๋ฒ๊ฐ ์ฟ ํค๋ฅผ ๋ฐ๊ธํ์ง ์์๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฅํ์ง ์์์ ์๋ ์๊ณ , ๋ค์ ์ฃผ์๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด์ง ์์์ ์๋ ์์ต๋๋ค. ์ฟ ํค๋ ๋์ฐฉํ์ง๋ง ์๋ฒ๊ฐ ์ธ์ ์ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ด ๊ธ์ ์ด ๋จ๊ณ๋ฅผ ์์๋๋ก ๋๋๋ ์ง๋จ ๋ฐฉ๋ฒ์ ๋๋ค. ์ค์ ๊ณ์ ์ผ๋ก ์คํํ๊ธฐ ์ ์ ํ ์คํธ ๊ณ์ ๊ณผ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค๋นํ์ธ์. ์ฟ ํค ๊ฐ ์์ฒด๋ฅผ ์บก์ฒํด ๊ณต๊ฐํ ํ์๋ ์์ต๋๋ค. ์ด๋ฆ๊ณผ ์ ์ฉ ๋ฒ์, ๋ง๋ฃ ์๊ฐ, ์ฐจ๋จ ์ฌ์ ๋ง์ผ๋ก๋ ๋ฌธ์ ๋ฅผ ์ขํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
2. ์ฒซ ๋จ๊ณ๋ ๋ก๊ทธ์ธ ์๋ต์ Set-Cookie์ ๋๋ค
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์ Network ํญ์์ ๋ก๊ทธ์ธ ์์ฒญ๊ณผ ์ด๋ ์๋ต์ ํ์ธํฉ๋๋ค. Set-Cookie๊ฐ ์ด๋ ์๋ต์ ๋ถ์๋์ง ๋จผ์ ์ฐพ์ต๋๋ค. ์ต์ข ํ์ด์ง์ ํค๋๋ง ๋ณด๋ฉด ์ค๊ฐ ์ด๋์์ ๋ฐ๊ธ๋ ์ฟ ํค๋ฅผ ๋์น ์ ์์ผ๋ฏ๋ก ํ์ํ๋ฉด ์์ฒญ ๊ธฐ๋ก์ ๋ณด์กดํฉ๋๋ค.
ํค๋๊ฐ ์๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฟ ํค ์ค์ ์ฝ๋์ ํ๋ก์ ์ฒ๋ฆฌ๋ถํฐ ํ์ธํฉ๋๋ค. ์๋ฒ ๋ก๊ทธ์์ ๋ฐ๊ธํ๋ค๊ณ ๊ธฐ๋ก๋์ด๋ ์ค๊ฐ ์๋น์ค๊ฐ ํค๋๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ค๋ง ์ด๋ฒ ๊ธ์ ํน์ CDN ์ค์ ์ด ์์ธ์ด๋ผ๊ณ ๋จ์ ํ์ง ์์ต๋๋ค. ์๋ณธ ์๋ต๊ณผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ ์๋ต์ ๋น๊ตํ ์ ์์ ๋ ์ฐจ์ด๋ฅผ ํ์ธํ์ธ์.
3. ์ ์ฅ ๋ฒ์์ ์ ์ก ๋ฒ์๋ ์์ฑ์ด ๊ฒฐ์ ํฉ๋๋ค
Domain์ ์ฟ ํค๊ฐ ์ ์ฉ๋ ํธ์คํธ ๋ฒ์์ ์ํฅ์ ์ฃผ๊ณ Path๋ ์์ฒญ ๊ฒฝ๋ก ๋ฒ์์ ์ํฅ์ ์ค๋๋ค. ์์ฑ์ ์๋ตํ์ ๋์ ๊ธฐ๋ณธ ๋์๋ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ๊ฒฝ๋ก์๋ง ์ ์ฉ๋๋ ์ฟ ํค๋ผ๋ฉด ๋ค๋ฅธ ํ์ด์ง์์ ๋ณด๋ด์ง์ง ์์ ์ ์์ต๋๋ค. ์๋น์ค๊ฐ ์ฌ๋ฌ ํธ์คํธ๋ฅผ ์ฐ๋์ง ํจ๊ป ํ์ธํ์ธ์.
Secure๋ ๋ณด์ ์ฐ๊ฒฐ์์์ ์ ์ก ์กฐ๊ฑด์ด๋ฉฐ HttpOnly๋ JavaScript์ ์ ๊ทผ์ ์ ํํฉ๋๋ค. HttpOnly ์ฟ ํค๊ฐ document.cookie์ ๋ณด์ด์ง ์๋๋ค๊ณ ์ ์ฅ ์คํจ๋ก ํ๋จํ๋ฉด ์ ๋ฉ๋๋ค. SameSite๋ ๋ค๋ฅธ ์ฌ์ดํธ์์ ์์ฒญ ๊ด๊ณ์์ ์ ์ก์ ์ํฅ์ ์ค๋๋ค. ๊ฐ์ ์ฌ์ดํธ์ ๊ฐ์ origin์ ๊ตฌ๋ถ๋ ์ค์ํ๋ฏ๋ก ์๋ธ๋๋ฉ์ธ์ด๋ผ๋ ์ด์ ๋ง์ผ๋ก ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ์ฑ ์ด ๊ฐ๋ค๊ณ ๋ณด์ง ๋ง์ธ์.
4. ๋ธ๋ผ์ฐ์ ์์ ์ธ ๊ฐ์ง ํ๋ฉด์ ๋์กฐํฉ๋๋ค
Network์์๋ Set-Cookie ๋ฐ๊ธ๊ณผ ๋ค์ ์์ฒญ์ Cookie ์ ์ก์ ํ์ธํฉ๋๋ค. Application์ Cookies์์๋ ์ค์ ์ ์ฅ๋ ์ด๋ฆ, Domain, Path, Secure, SameSite, ๋ง๋ฃ ์ ๋ณด๋ฅผ ํ์ธํฉ๋๋ค. Issues๋ ์ฟ ํค ์ฐจ๋จ ์๋ด๊ฐ ์๋ค๋ฉด ๊ทธ ์ฌ์ ๋ ๊ธฐ๋กํฉ๋๋ค. ๋๊ตฌ ์ด๋ฆ๊ณผ ์์น๋ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๊ฐ์ ์ด๋ฆ์ ์ฟ ํค๊ฐ ์๋ก ๋ค๋ฅธ Domain์ด๋ Path๋ก ์ค๋ณต ์ ์ฅ๋๋์ง๋ ํ์ธํ์ธ์. ์๋ฒ๊ฐ ์๋ํ์ง ์์ ๊ฐ์ ์ฝ๋ ์ํฉ์ด ์๊ธธ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ฌํํ ๋ค ํ ์คํธ ํ๊ฒฝ์ ์ฟ ํค๋ฅผ ์ง์ฐ๊ณ ํ ๋ฒ ๋ ๋น๊ตํ๋ฉด ์ค๋๋ ๊ฐ์ ์ํฅ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ด์ ์ฌ์ฉ์์ ๋ชจ๋ ์ฟ ํค๋ฅผ ์ผ๊ด ์ญ์ ํ๋ ๋ฐฉ์์ ๋จผ์ ๊ถํ์ง ์์ต๋๋ค.
5. ํค๋ ๋ฌธ์์ด ์ค์ต๊ณผ ๊ฒ์ฆ์ ํ๊ณ
์๋ ์ฝ๋๋ Python์ผ๋ก ์ฟ ํค ์์ฑ ๋ฌธ์์ด์ ์ฝ๋ ์์ ์ค์ต์ ๋๋ค. ์์์ demo ๊ฐ์ ์ฌ์ฉํ๋ฉฐ ์ค์ ๋ก๊ทธ์ธ ์ธ์ ์ ๋ฐ๊ธํ์ง ์์ต๋๋ค. ์ถ๋ ฅ์ด ๊ธฐ๋ํ ์์ฑ๊ณผ ๊ฐ์์ง ํ์ธํ๋ฉด ์์ฑ ์ด๋ฆ์ ์ฝ๋ ์ฐ์ต์ด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ์ฟ ํค๋ฅผ ๋ฐ์๋ค์ด๋์ง๊น์ง ์ฆ๋ช ํ๋ ์ฝ๋๋ ์๋๋๋ค.
ํนํ ๋ธ๋ผ์ฐ์ ์ ์ฌ์ดํธ ๊ด๊ณ ํ๋จ, HTTPS, ์ฌ์ฉ์ ์ค์ , ์ ์ผ์ ์ฟ ํค ์ ํ์ ๋จ์ ๋ฌธ์์ด ํ์๋ก ์ฌํ๋์ง ์์ต๋๋ค. ์๋ฒ ์ฝ๋์ ์์ฑ์ด ๋ง์ ๋ณด์ฌ๋ ์ค์ ์์ฒญ ๊ฒฝ๋ก์์ ์ ์ฅยท์ ์ก์ ๋ค์ ๊ฒ์ฌํด์ผ ํฉ๋๋ค. ๋ฌธ์์ด ๊ฒ์ฆ, ๋ธ๋ผ์ฐ์ ๊ฒ์ฆ, ์๋ฒ ์ธ์ ๊ฒ์ฆ์ ๋๋์ด ๊ธฐ๋กํ๋ ํธ์ด ๊ฒฐ๊ณผ๋ฅผ ์ ํํ๊ฒ ์ค๋ช ํ ์ ์์ต๋๋ค.
6. ์ฟ ํค๊ฐ ์ ์ก๋๋ค๋ฉด ์๋ฒ ๊ฒ์ฆ ๋จ๊ณ๋ก ์ด๋ํฉ๋๋ค
๋ค์ ์์ฒญ์ ์ฌ๋ฐ๋ฅธ ์ฟ ํค๊ฐ ๋ถ์๋ค๋ฉด ์ธ์ ์ ์ฅ์, ๋ง๋ฃ, ์๋ช ๊ฒ์ฆ๊ณผ ์๋ฒ ๊ฐ ์ค์ ์ฐจ์ด๋ฅผ ์ดํด๋ด ๋๋ค. ์ฌ๋ฌ ์๋ฒ๊ฐ ์๋ก ๋ค๋ฅธ ์๋ช ํค๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์์ ๋ ์ธ์ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ ๊ตฌ์กฐ๋ผ๋ฉด ์ ์ก ๋ฌธ์ ์๋ ๋ค๋ฅธ ์คํจ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๊ฐ๋๋ ์์คํ ์๊ณ ์ฐจ์ด๋ ๋ง๋ฃ ํ๋จ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
์ฆ์๋ง ๋ณด๊ณ HttpOnly๋ Secure๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ ํผํ์ธ์. ๋จผ์ ์ ์ ์์ฒญ๊ณผ ์คํจ ์์ฒญ์ ์ฐจ์ด๋ฅผ ์ฐพ๊ณ ํ ์คํธ ํ๊ฒฝ์์ ์์ ๋ณ๊ฒฝ์ ๊ฒ์ฆํฉ๋๋ค. ๋ก๊ทธ์ธ HTML์ ๊ณต์ ์บ์๋ก ์ ๊ณตํ๋ค๋ฉด ๊ฐ์ธํ์ ์ฟ ํค ๋ฐ๊ธ์ ๋ถ๋ฆฌํ๋์ง๋ ํ์ธํฉ๋๋ค. ๊ณต๊ฐ HTML ์บ์๋ฅผ ๋๋ฆฌ๋ ์์ ๊ณผ ๋ก๊ทธ์ธ ์ฟ ํค ๋ณดํธ๋ ํจ๊ป ์ค๊ณํด์ผ ํฉ๋๋ค.
7. ์ ์ ๋ก๊ทธ์ธ๊ณผ ์คํจ ๋ก๊ทธ์ธ์ ๋น๊ตํ๊ธฐ
ํ ์คํธ ๊ณ์ ์ผ๋ก ์ ์ ๋ก๊ทธ์ธํ ์์ฒญ ํ ๊ฑด๊ณผ ์คํจํ ์์ฒญ ํ ๊ฑด์ ๊ฐ์ ์์๋ก ๊ธฐ๋กํฉ๋๋ค. ์์ฒญ ์ฃผ์, ํธ์คํธ, ์๋ต ์ฝ๋์ ์ฟ ํค ์ด๋ฆ์ ๋น๊ตํ๊ณ ๋น๋ฐ ๊ฐ์ ์ ์ธํ์ธ์. ์ฟ ํค๊ฐ ๋ฐ๊ธ๋๋ ์๋ต์ด ๋ค๋ฅด๋ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ถ๊ธฐ์ ์ด๋ ๊ณผ์ ์ ํ์ธํฉ๋๋ค. ํ ํ๋ฉด์ ๊ฒฐ๊ณผ๋ง ๋ณด๋ ๊ฒ๋ณด๋ค ํ๋ฆ ๋น๊ต๊ฐ ์ค๋ช ํ๊ธฐ ์ฝ์ต๋๋ค.
๋ก๊ทธ์ธ ํ ์ด๋ํ๋ ์ฃผ์๊ฐ www ์ ๋ฌด๋ ์๋ธ๋๋ฉ์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋์ง๋ ๋ด ๋๋ค. Domain๊ณผ Path ์ ์ฉ ๋ฒ์๊ฐ ๊ทธ ์ฃผ์์ ๋ง๋์ง ํ์ธํ์ธ์. ๋ค๋ง ๊ณต์ ๋ฒ์๋ฅผ ๋ํ๋ฉด ๋ค๋ฅธ ํธ์คํธ์๋ ์ฟ ํค๋ฅผ ๋ณด๋ด๊ฒ ๋ ์ ์์ผ๋ฏ๋ก ํ์ ๋ฒ์๋ฅผ ๋จผ์ ์ ํฉ๋๋ค. ๋ก๊ทธ์ธ์ ๊ณ ์น๊ธฐ ์ํด ๋ชจ๋ ์๋ธ๋๋ฉ์ธ์ผ๋ก ๋ฌด์กฐ๊ฑด ํ๋ํ๋ ๋ฐฉ์์ ํผํฉ๋๋ค.
HTTPS ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ HTTP ๋ก์ปฌ ํ๊ฒฝ์ ๊ตฌ๋ถํฉ๋๋ค. ์ฟ ํค๊ฐ ์ ์ฅ๋๋์ง๋ฟ ์๋๋ผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ณด๋ด๊ฑฐ๋ ๋ณด๋ด์ง ์์๋์ง ํ์ธํ๋ ํธ์ด ์ค์ํฉ๋๋ค. ๋ก์ปฌ์ ํน๋ณ ์ฒ๋ฆฌ์ ์ด์ HTTPS ๋์์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ํ ํ๊ฒฝ์ ๊ฒฐ๊ณผ๋ง ์ผ๋ฐํํ์ง ์์ต๋๋ค. ์ค์ ์ ์ฉํ ์๋ฒ์์ ์ ์ ํ๋ฆ๊ณผ ๋ก๊ทธ์์ ํ๋ฆ์ ๋ชจ๋ ๊ฒ์ฌํ์ธ์.
๋ก๊ทธ์์ ๋๋ ๋ฐ๊ธ๊ณผ ๊ฐ์ ์ด๋ฆ, ํธ์คํธ ๋ฒ์์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋์ง ๋์กฐํฉ๋๋ค. ์ค๋๋ ์ฟ ํค๊ฐ ๋ค๋ฅธ ๋ฒ์์ ๋จ์ ์์ผ๋ฉด ์ ์ฟ ํค์ ์์ฌ ๋ณด์ผ ์ ์์ต๋๋ค. ํ ์คํธ ํ๊ฒฝ์์ ๊ฐ๊ฐ์ ์ ์ฅ ํญ๋ชฉ์ ํ์ธํ๊ณ ์๋น์ค๊ฐ ์ค์ ์ฝ์ ์ด๋ฆ์ ๋ก๊ทธ๋ก ๋จ๊ธฐ๋ฉด ํ๋จํ๊ธฐ ์ฝ์ต๋๋ค. ๋ก๊ทธ์๋ ๊ฐ ์์ฒด๋ฅผ ๋ฃ์ง ์์๋ ๋ฉ๋๋ค.
์ต์ข ๊ธฐ๋ก์ ๋ฐ๊ธ ์ฑ๊ณต, ์ ์ฅ ์ฑ๊ณต, ์ ์ก ์ฑ๊ณต, ์ธ์ ๊ฒ์ฆ ์ฑ๊ณต์ ๋๋์ด ํ์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ ๋จ๊ณ์ ์์ ์ ์์ฒญํด์ผ ํ๋์ง ๋ถ๋ช ํด์ง๋๋ค. ๋ฌธ์ ๋ฅผ ๊ณ ์น ๋ค ์๋ก์ด ๋ธ๋ผ์ฐ์ ํ๋กํ๊ณผ ๊ธฐ์กด ํ๋กํ์์ ๋ชจ๋ ํ์ธํ๋ฉด ์ค๋๋ ๊ฐ์ ์ํฅ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ธ์ฆ ์์ฑ์ ๋๋ ๋ฐฉ์๋ณด๋ค ์ฆ๊ฑฐ๋ฅผ ๋ชจ์ ํ์ํ ๋ถ๋ถ๋ง ์์ ํ์ธ์.
8. ๋ฐ๋ผ ํ๋ ์์
๋ช ๋ น๊ณผ ์ฝ๋๋ ํ์ต์ฉ์ ๋๋ค. ์ค๋ช ์ ํ์๋ ์คํ ํ๊ฒฝ์ ๊ตฌ๋ถํ๊ณ ์ ์ํ ํด๋ ๋๋ ๋ชจ์ ์ ๋ ฅ์ผ๋ก ์์ํ์ธ์.
์์ ์ฝ๋
from http.cookies import SimpleCookie
cookie = SimpleCookie()
cookie.load('session_token=demo; Path=/; Secure; HttpOnly; SameSite=Lax')
m = cookie['session_token']
print('Path:', m['path'])
print('Secure:', bool(m['secure']))
print('HttpOnly:', bool(m['httponly']))
print('SameSite:', m['samesite'])9. ๊ฒ์ฆ ๊ฒฐ๊ณผ์ ํด์
| ํ์ธ ํญ๋ชฉ | ๊ฒฐ๊ณผ ๋๋ ๊ฒ์ฆ ๋ฒ์ |
|---|---|
| Path | / |
| Secure / HttpOnly | True / True |
| SameSite | Lax |
| ๋ธ๋ผ์ฐ์ ์ ์ฅยท์ ์ก | ์ด ์ค์ต์์๋ ๊ฒ์ฆํ์ง ์์ |
๋ก์ปฌ Python์ผ๋ก ์์ฑ ๋ฌธ์์ด ํ์ฑ๋ง ๊ฒ์ฆํ์ต๋๋ค. ์ค์ ๊ณ์ ๋ก๊ทธ์ธ, ๋ธ๋ผ์ฐ์ ์ ์ฅ ์ ์ฑ , ํน์ ์ฌ์ดํธ์ ์ธ์ ๋์์ ๊ฒ์ฆํ ์ฌ๋ก๋ ์๋๋๋ค.
10. ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
HttpOnly๋ฅผ ๋๋ฉด ๋ก๊ทธ์ธ์ด ๊ณ ์ณ์ง๋์?
JavaScript์์ ์ ๋ณด์ธ๋ค๋ ์ด์ ๋ง์ผ๋ก ๋์ง ๋ง์ธ์. ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ ์ฅ๊ณผ ์์ฒญ ์ ์ก์ ๋จผ์ ํ์ธํฉ๋๋ค.
์ฟ ํค๊ฐ ์๋๋ฐ ์ ๋นํ์์ธ๊ฐ์?
์๋ฒ ์ธ์ ์กฐํ๋ ์๋ช , ๋ง๋ฃ ๊ฒ์ฆ์ด ์คํจํ ์ ์์ต๋๋ค. ์ฟ ํค ์กด์ฌ์ ์ธ์ ์ ํจ์ฑ์ ๋ค๋ฅธ ์กฐ๊ฑด์ ๋๋ค.
๋ก๊ทธ์์์ ๊ฐ๋ง ๋น์ฐ๋ฉด ๋๋์?
๋ฐ๊ธ ๋์ ๋ง๋ ๋ฒ์๋ก ์ญ์ ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ด๋ฆ์ ๋ค๋ฅธ ๊ฒฝ๋ก ์ฟ ํค๊ฐ ๋จ๋ ๊ฒฝ์ฐ๋ ๊ฒํ ํ์ธ์.
11. ๊ณต์ ์ฐธ๊ณ ์๋ฃ
๋์ ์ ์์ ์ต์ ์ ์๋ ์ ์์ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ณธ๋ฌธ์ ์ฌ๋ก์ ์์ ๋ ํ์ต์ ์ํด ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ฑํ์ต๋๋ค.
์์ ์ ๋ ฅ์ ํ์ต์ฉ ๋ชจ์ ์๋ฃ์ ๋๋ค. ์ค์ ํ๊ฒฝ์ ์ ์ฉํ ๋๋ ๋ณธ๋ฌธ์ ์๋ดํ ๊ฒ์ฆ ๋ฒ์์ ์กฐ๊ฑด์ ํ์ธํ์ธ์.
๐ฌ ๋๊ธ 0๊ฐ