Cookie์ Session๋ฅผ ๋ค๋ฃจ๊ธฐ ์์ HTTP์ ๋ฌด์ํ์ฑ(Stateless)๋ฅผ ์ดํดํด์ผ ํ๋ค.
HTTP์ ๋ฌด์ํ์ฑ(Stateless)์ด๋, ์๋ฒ์์ ํต์ ์ด ๋๋๋ฉด ์๋์ ์ํ๋ก ๋๋์๊ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ ์ด์ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์๋ฒ๊ฐ ๋ณด์กด์กฐ์ฐจ ํ์ง ์๋๋ค๋ ๊ฒ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ฃ์ด ์๋ต์ ๋ฐ์์ด๋ ํด๋น ํต์ ์ด ๋๋๋ฉด ๋ก๊ทธ์ธ์ด ๋์ด ์๋ ์ํ๋ ์ข ๋ฃ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฆ๊ฐํ๋ฉด, ๊ธฐ์กด์ ์๋ฒ์ ๋ค๋ฅธ ์๋ฒ๋ฅผ ์ถ๊ฐํด ๋์ํ ์ ์๋ค.
์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋, ๋์์ ๋น ๋ฅด๊ฒ ํ ์ ์๋ค.
์ค์ผ์ผ์์(์ํ ํ์ฅ)์ ์ ๋ฆฌํ๋ค.
๐ก ๋ฌด์ํ์ฑ์ด ์น๋ช ์ ์ธ ๋จ์ ์ ์๊ณ ์๋ค๊ณ ์๊ฐํ์ผ๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํ ๋๋ ์ต๋ํ ๋ฌด์ํ์ฑ์ ์ ์งํ๋ฉฐ ์ค๊ณํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ๋ํ, ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์ธ์ ์ ์ฌ์ฉํ๋ค.(์ํ ์ ์ง๋ ์ด์ฉ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์ต์ํ์ผ๋ก ์ฌ์ฉํ ๊ฒ)
์ฟ ํค๋ ์์ฒญ ์์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์๋ฒ์ ์ ์กํ๋ค๊ณ ํ์ง๋ง ์๋ฌด๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒ์ ์๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฟ ํค์ ์ ์ฅํ ํ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์๋ง ๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ด๋ฐ ํน์ ์กฐ๊ฑด์ ์ฟ ํค ์ต์ ์ด๋ผ๊ณ ํ๋ค.
์ฟ ํค ์ต์ ์ ์ ์ฅ๋์ด ์๋ ๋๋ฉ์ธ ์ ๋ณด์ ์์ฒญ ํด์ผํ๋ URL์ ๋๋ฉ์ธ๊ณผ ๊ฐ์์ผ ํ๋ค. ์ด๋ ๋๋ฉ์ธ์ ์๋ธ๋๋ฉ์ธ ๋ฐ ํฌํธ, ์ธ๋ถ ๊ฒฝ๋ก๋ ํฌํจํ์ง ์๋๋ค.
โ๏ธ ์๋ธ๋๋ฉ์ธ : www.google.com
์์ www
์ ํด๋นํ๋ค.
์๋ฅผ ๋ค์ด, ์ฟ ํค ์ต์
์ naver.com
์ด ์ ์ฅ๋์ด ์๋ค๊ณ ์น๋ค๋ฉด, ๋ด๊ฐ google.com
์์ ์ ์ฟ ํค๋ฅผ ์ ์กํ ์๋ ์๋ค๋ ๊ฒ์ด๋ค.
๋๋ฉ์ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟ ํค ์ต์ ์ ์ ์ฅ๋์ด ์๋ Path, ์ฆ ์ธ๋ถ๊ฒฝ๋ก์ ์์ฒญ URL์ด ๊ฐ์์ผ ์ฟ ํค๋ฅผ ์๋ฒ์ ์ ์กํ ์ ์๋ค.
๋ค๋ง ์ฃผ์ํด์ผ ํ ์ ์ ์ค์ ๋ Path๋ฅผ ์ ๋ถ ๋ง์กฑํ๋ ๊ฒฝ์ฐ, ํ์ ์ธ๋ถ๊ฒฝ๋ก๊ฐ ์๋๋ผ๋ ์ฟ ํค๋ฅผ ์๋ฒ์ ์ ์กํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ฟ ํค ์ต์
์ Path๊ฐ /users
์ธ๋ฐ, ์์ฒญ ์ธ๋ถ ๊ฒฝ๋ก๊ฐ /users/hihi
์ธ ๊ฒฝ์ฐ๋ ์ฟ ํค ์ ์ก ์๊ฐ๋~
์ฟ ํค๊ฐ ์ ํจํ ๊ธฐ๊ฐ์ ์ ํ๋ ์ต์ ์ด๋ค. ์ฟ ํค๊ฐ ์์ํ ๋จ์์๊ฒ ๋๋ฉด ํ์ทจ์ ํ๋ฅ ์ด ์ฌ๋ผ๊ฐ๋ฏ๋ก ์ ํด์ง ์ ํจ ๊ธฐ๊ฐ์ ์์ฑํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
ํด๋ผ์ด์ธํธ์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค์ ํ๋ฉฐ ์ง์ ๋ ์๊ฐ์ด ์ง๋๋ฉด ์ฟ ํค๋ ์๋์ผ๋ก ํ๊ดด๋๋ค.
ํด๋น ์ต์ ์ ์ฌ๋ถ์ ๋ฐ๋ผ ์ฟ ํค์ ์ข ๋ฅ๋ฅผ ๋๋ ์ ์๋ค.
- ์ธ์ ์ฟ ํค๐ช : ๊ธฐ๊ฐ ์ ํ ์ต์ ์ด ์๋ ์ฟ ํค. ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ ์ค์ธ ์ํ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์์ ์ฟ ํค์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ข ๋ฃ ์ ํด๋น ์ฟ ํค๋ ์ญ์ ๋๋ค.
- ์์์ฑ ์ฟ ํค๐ช : ์ ํจ ๊ธฐ๊ฐ ์ต์ ์ด ์๋ ์ฟ ํค๋ก ๋ธ๋ผ์ฐ์ ์ ์ข ๋ฃ ์ฌ๋ถ์๋ ์๊ด์์ด ์ต์ ์ด ์ ํด๋ ์ ํจ ๊ธฐ๊ฐ๊น์ง ์ฌ์ฉํ ์ ์๋ค.
์ฟ ํค๋ฅผ ์ ์กํด์ผ ํ ๋ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ์ ๋ฐ๋ฅธ ์ฟ ํค ์ ์ก ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ต์ .
ํด๋น ์ต์
์ด true
์ผ ๋, HTTPS ํ๋กํ ์ฝ์ ์ด์ฉํ์ฌ ํต์ ํ๋ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๋ฅผ ์ ์กํ ์ ์๋ค.
ํด๋น ์ต์
์ด ์๋ค๋ฉด ํ๋กํ ์ฝ์ ์๊ด์์ด HTTP
, HTTPS
์ ๋ชจ๋ ์ฟ ํค๋ฅผ ์ ์กํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค์ ์ ๊ทผ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ต์
์ผ๋ก ํด๋น ์ต์
์ด true
์ผ ๊ฒฝ์ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ํค ์ ๊ทผ์ด ์ ์ด๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฟ ํค ์ ๊ทผ์ ํ์ฉํ๊ฒ ๋๋ฉด XSS
๊ณต๊ฒฉ์ ์ทจ์ฝํด์ง๊ธฐ ๋๋ฌธ์ ํ์์ ์ผ๋ก ๋ช
์ํด์ค์ผ ํ๋ ์ต์
์ด๋ค.
๐ก XSS
Cross-Origin
์์ฒญ์ ๋ฐ์ ๊ฒฝ์ฐ ์์ฒญ์์ ์ฌ์ฉํ ๋ฉ์๋์ ํด๋น ์ต์
์ ์กฐํฉ์ผ๋ก ์๋ฒ์ ์ฟ ํค ์ ์ก ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ์ต์
.
โ๏ธ
Cross-Origin
์ด ๋ญ์..?
Same-Site
๋ ์์ฒญ์ ๋ณด๋ธOrigin(URL)
๊ณผ ์๋ฒ์ ๋๋ฉ์ธ, ํ๋กํ ์ฝ, ํฌํธ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. ์ด ์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉดCross-Origin
๋ผ๊ณ ํ๋ค.
์์๐คฏ
Origin :https://www.example.com:80
,
์ฟ ํค URL :https://api.example.com:80
๋ผ๋ฉดCross-Origin
Cross-Origin
์์ฒญ์ด๋ฉด 'GET' ๋ฉ์๋์ ๋ํด์๋ง ์ฟ ํค๋ฅผ ์ ์กํ ์ =์๋ค. Cross-Origin
์ด ์๋ same-site
์ธ ๊ฒฝ์ฐ์๋ง ์ฟ ํค๋ฅผ ์ ์ก ํ ์ ์๋ค.HTTPS ํ๋กํ ์ฝ
์์๋ง ๊ฐ๋ฅํ๋ค๋ ์๋ฏธํด๋น ์ต์
์ ์ง์ ํ ๋ค์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ฟ ํค๋ฅผ ์ฒ์ ์ ์กํ๊ฒ ๋๋ค๋ฉด ํค๋์ Set-Cookie
๋ผ๋ ํ๋กํฐํผ์ ์ฟ ํค๋ฅผ ๋ด์ ์ ์กํ๋ค.
์ดํ, ํด๋ผ์ด์ธํธ ํน์ ์๋ฒ์์ ์ฟ ํค๋ฅผ ์ ์กํด์ผ ํ๋ค๋ฉด ํด๋ผ์ด์ธํธ๋ ํค๋์ Cookie
๋ผ๋ ํ๋กํฐํฐ์ ์ฟ ํค๋ฅผ ๋ด์ ์๋ฒ์ ์ฟ ํค๋ฅผ ์ ์กํ๊ฒ ๋๋ค.
๐กSame-Origin๊ณผ Same-Site์ ์ฐจ์ด
๐ก๊ธฐ์ตํด์ผ ํ ์ !
๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ์ผ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ์ง๋ง ์๋ฒ์์ ๋ธ๋ผ์ฐ์ ๋ก ์ฟ ํค๋ฅผ ๋ณด๋ผ ๋๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋๋ก ๊ตฌํํด์ฃผ์ด์ผ ํ๋ค.
Session Id
๋ฅผ ๋ถ์ฌํ๋ค. Session Id
๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์๋ฒ์ ์์ง์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋ถ์ฌํ๋ ๊ฒ์ผ๋ก ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋ค.Session Id
๋ก ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํด ํด๋ผ์ด์ธํธ์ ์๊ตฌ์ ๋ง๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.Session Id
๋ฅผ ๋ฐํํ๊ณ ์๋ฒ๋ ์ฟ ํค ํ๋กํฐํผ์ธ Set-Cookie
์ Session Id
๋ฅผ ๋ด์ ๋ฐํํ๋ค.Session Id
๋ฅผ ํ์ธํด ํด๋ผ์ด์ธํธ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธํ๋ค.