HTTP ํ๋กํ ์ฝ ํน์ง
- ๋น์ฐ๊ฒฐ ์งํฅ(Connectionless)
ํด๋ผ์ด์ธํธ์์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์๋ต์ ํ๊ณ ์ ์์ ๋๋ ํน์ฑ์ด ์๋ค.(HTTP1.1์์ Connectionํค๋์ keep-alive์ค์ ํ๋ฉด ์ปค๋ฅ์ ์ ์ ์งํ ์ ์๋ค.) - ์ํ์ ๋ณด ์ ์ง ์ ํจ(Stateless)
HTTP ํต์ ์ ์์ฒญ์ ์๋ตํ๊ณ ์ ์์ ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ์ํ ์ ๋ณด๋ฅผ ์ ์ ์๋ค.
์ฟ ํค์ ์ธ์ ์ ํ์์ฑ
์ฟ ํค์ ์ธ์ ์ ํ์ → HTTP ํ๋กํ ์ฝ์์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํจ
์์ ๊ฐ์ HTTP ํ๋กํ ์ฝ์ ํน์ง์ผ๋ก ๋ชจ๋ ์์ฒญ๊ฐ์ ์์กด๊ด๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ ์ ์๋ค. ์ด์ ์์ฒญ๊ณผ ํ์ฌ ์์ฒญ์ด ๊ฐ์ ์ฌ์ฉ์์ ์์ฒญ์ธ์ง ์๊ธฐ ์ํด์๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค. HTTP ํ๋กํ ์ฝ์์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๊ธฐ์ ๋ก ์ฟ ํค์ ์ธ์ ์ด ์๋ค.
์ฟ ํค(Cookie)
๊ฐ๋
- ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅ๋๋ ํค์ ๊ฐ์ด ๋ค์ด์๋ ํ์ผ์ด๋ค.
- ์ด๋ฆ, ๊ฐ, ์ ํธ ์๊ฐ, ๊ฒฝ๋ก ๋ฑ์ ํฌํจํ๊ณ ์๋ค.
- ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ์ฌ ์ฐธ์กฐํ๋ค.
- ์ฃผ๋ก ์๋ฒ์์ ์์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ๋ ๋ฐ์ดํฐ
๊ตฌ์ฑ ์์
- ์ฟ ํค์ ์ด๋ฆ(name)
- ์ฟ ํค์ ๊ฐ(value)
- ์ฟ ํค์ ๋ง๋ฃ์๊ฐ(Expires)
- ์ฟ ํค๋ฅผ ์ ์กํ ๋๋ฉ์ธ ์ด๋ฆ(Domain)
- ์ฟ ํค๋ฅผ ์ ์กํ ๊ฒฝ๋ก(Path)
- ๋ณด์ ์ฐ๊ฒฐ ์ฌ๋ถ(Secure)
- HttpOnly ์ฌ๋ถ(HttpOnly)
๋์๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ์ ํ๋ค.
- ์๋ฒ๋ ์ํ๋ฅผ ์ ์งํ๊ณ ์ถ์ ๊ฐ์ ์ฟ ํค(cookie)๋ก ์์ฑ
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธํ๊ณ ์๋ตํค๋์ 'set-cookie: user=chrisjune'์ ์ถ๊ฐํ์ฌ ์๋ตํ๋ค.
- ์ ๋ฌ๋ฐ์ ์ฟ ํค๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌํ๊ณ ์๋ค๊ฐ ๋ค์ ์์ฒญ ๋ ์ฟ ํค๋ฅผ HTTP ํค๋์ ๋ฃ์ด์ ์ ์ก. 'cookie: user=chrisjune'
- ์๋ฒ์์๋ ์ฟ ํค ์ ๋ณด๋ฅผ ์ฝ์ด ์ด์ ์ํ ์ ๋ณด๋ฅผ ํ์ธํ ํ ์๋ต
์ฟ ํค ์ฌ์ฉ ์
- ์์ด๋, ๋น๋ฐ๋ฒํธ ์ ์ฅ
- ์ผํ๋ชฐ ์ฅ๋ฐ๊ตฌ๋
์ฟ ํค ๊ฐ์ F12๋ฅผ ๋๋ฌ ๊ฐ๋ฐ์๋๊ตฌ์์ ํ์ธํ๊ฑฐ๋ ๊ด๋ จ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ฉด ํ์ธ/์์ ํ ์ ์๋ค. ์๋ณ์กฐ์ ์ํ์ด ํญ์ ์๊ธฐ ๋๋ฌธ์ ์ฟ ํค๊ฐ๋ ์ํธํํด์ผ ์์ ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ธ์ (Session)
๊ฐ๋
- ์ผ์ ์๊ฐ ๋์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ๋ค์ด์ค๋ ์์ฒญ์ ํ๋์ ์ํ๋ก ๋ณด๊ณ ๊ทธ ์ํ๋ฅผ ์ ์งํ๋ ๊ธฐ์ ์ด๋ค.
- ์ฆ, ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์๋ฒ์ ์ ์ํ ์ดํ๋ถํฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํ ๋๊น์ง ์ ์ง๋๋ ์ํ์ด๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ๊น์ง ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์งํ๊ฒ ํด์ฃผ๋ ๊ธฐ์
๋์๋ฐฉ์
- ํด๋ผ์ด์ด๋ฉ๊ฐ ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ์ ํ๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธํ๊ณ uniqueํ id๋ฅผ sessionid๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅํ๋ค.
- ์๋ฒ๊ฐ ์๋ตํ ๋ ์๋ตํค๋์ 'set-cookie: sessionid=a1x2fjz'๋ฅผ ์ถ๊ฐํ์ฌ ์๋ตํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ์ดํ ์๋ฒ์ ์์ฒญํ ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ธฐ๊น์ง ์ ๋ฌ๋ฐ์ ์ฟ ํค๋ฅผ ์์ฒญํค๋์ 'cookie: sessionid=a1x2fjz'๋ฅผ ๋ฃ์ด ์ ์กํ๋ค.
- ์๋ฒ์์ ์์ฒญํค๋์ 'sessionid' ๊ฐ์ ์ ์ฅ๋ ์ธ์ ์ ์ฅ์์์ ์ฐพ์๋ณด๊ณ ์ ํจํ์ง ํ์ธ ํ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ตํ๋ค.
์ธ์ ์ฌ์ฉ ์
- ๋ก๊ทธ์ธ
์ธ์ ๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ค. ์ฆ, ์ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ์๋จ์ ์ฟ ํค์ด๋ค.
์ฟ ํค์ ์ธ์ ์ ์ฐจ์ด์
๊ตฌ๋ถ | ์ด๋ฆ | ๋ด์ฉ |
์ ์ฅ ์์น | ์ฟ ํค | ํด๋ผ์ด์ธํธ |
์ธ์ | ์๋ฒ | |
๋ณด์ | ์ฟ ํค | ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ฏ๋ก ๋ณด์์ ์ทจ์ฝ |
์ธ์ | ์ฟ ํค๋ฅผ ์ด์ฉํด Session ID๋ง ์ ์ฅํ๊ณ ์ด ๊ฐ์ผ๋ก ๊ตฌ๋ถํด์ ์๋ฒ์ ์ฒ๋ฆฌํ๋ฏ๋ก ๋น๊ต์ ๋ณด์์ฑ์ด ์ข๋ค. | |
๋ผ์ดํ ์ฌ์ดํด | ์ฟ ํค | ๋ง๋ฃ์๊ฐ์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํด๋ ๊ณ์ ๋จ์์์ ์ ์๋ค. |
์ธ์ | ๋ง๋ฃ์๊ฐ์ ์ ํ ์ ์์ง๋ง ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ง๋ฃ์๊ฐ์ ์๊ด์์ด ์ญ์ ๋๋ค. | |
์๋ | ์ฟ ํค | ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋์ด์ ์๋ฒ์ ์์ฒญ์ ๋น ๋ฅด๋ค. |
์ธ์ | ์ค์ ์ ์ฅ๋ ์ ๋ณด๊ฐ ์๋ฒ์ ์์ผ๋ฏ๋ก ์๋ฒ์ ์ฒ๋ฆฌ๊ฐ ํ์ํด ์ฟ ํค๋ณด๋ค ๋๋ฆฌ๋ค. |
์ฐธ๊ณ
- doooyeon.github.io/2018/09/10/cookie-and-session.html
- chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6bcb327582
'๐CS > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
XSS(Cross-site Scripting) ๊ณต๊ฒฉ (0) | 2021.04.25 |
---|---|
[Web] param vs query vs body (2) | 2021.04.18 |
[Web] CORS(Cross-Origin Resource Sharing) (0) | 2021.04.18 |
[Web] HTTP, HTTPS, HTTP ๋ฒ์ (1) | 2021.04.08 |
[Web] REST & RESTful (0) | 2021.04.03 |
๋๊ธ