728x90

๋ณด์•ˆ์˜ 3์š”์†Œ

Credibility (๊ธฐ๋ฐ€์„ฑ)

  • ์œ ์ถœ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค, ํ”„๋ผ์ด๋ฒ„์‹œ
  • ํŠน์ • ๋ฐ์ดํ„ฐ๊ฐ€ ํ—ˆ๊ฐ€๋ฐ›์ง€ ์•Š๊ฑฐ๋‚˜ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ
  • ๊ธฐ๋ฐ€์„ฑ ํ•ด์น˜๋Š” ๊ณต๊ฒฉ: ๋„์ฒญ, ์‚ฌํšŒ๊ณตํ•™, ์Šค๋‹ˆํ•‘, ์Šค๋ˆ„ํ•‘, Traffic Analysis
  • ๊ธฐ๋ฐ€์„ฑ ๋ณด์กด ๋ฐฉ๋ฒ•: Identification(์‹๋ณ„), ์ธ์ฆ, ๊ถŒํ•œ๋ถ€์—ฌ, ์•”ํ˜ธํ™” ๋“ฑ

Integrity (๋ฌด๊ฒฐ์„ฑ)

  • ์ •๋ณด๊ฐ€ ๋ณ€์งˆ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ํŒŒ๊ดด๋˜๊ฑฐ๋‚˜, ๋ณ€ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
  • ๋ฌด๊ฒฐ์„ฑ ํ•ด์น˜๋Š” ๊ณต๊ฒฉ: ์œ„์กฐ(Forgery), ๋ถ€์ธ(Repudiation)
  • ๋ฌด๊ฒฐ์„ฑ ๋ณด์กด ๋ฐฉ๋ฒ•: ์ ‘๊ทผ์ œ์–ด, ๋งค์‹œ์ง€(๋ฐ์ดํ„ฐ) ์ธ์ฆ ๋“ฑ

Availability (๊ฐ€์šฉ์„ฑ)

  • ์ธ์ฆ๋ฐ›์€ ์‚ฌ์šฉ์ž๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ€์šฉ์„ฑ์„ ํ•ด์น˜๋Š” ๊ณต๊ฒฉ: ์„œ๋น„์Šค๊ฑฐ๋ถ€๊ณต๊ฒฉ(DoS, Denial of Service), ๋ถ„์‚ฐ์„œ๋น„์Šค๊ฑฐ๋ถ€๊ณต๊ฒฉ(DDoS, Distributed DoS)
  • ๊ฐ€์šฉ์„ฑ ๋ณด์กด ๋ฐฉ๋ฒ•: ๋ฐฑ์—… ์†”๋ฃจ์…˜ ์‚ฌ์šฉ, ์นจ์ž… ํƒ์ง€ ์‹œ์Šคํ…œ ์šด์šฉ ๋“ฑ

Authentication (์ธ์ฆ)

  • ์ •๋ณด๊ฐ€ ์‚ฌ์‹ค์ด๊ณ , ๊ฒ€์ฆ๋˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • 1) ์ „์†ก ๊ณผ์ • 2) ๋ฉ”์‹œ์ง€ 3) ๋ฉ”์‹œ์ง€ ์ „์†ก์ž ๋ชจ๋‘๊ฐ€ ๊ฒ€์ฆ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์ธ์ฆ์„ฑ์„ ํ•ด์น˜๋Š” ๊ณต๊ฒฉ: ๋ฉ”์‹œ์ง€ ๋ณ€์กฐ, ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(Man in the Middle Attack)
  • ์ธ์ฆ์„ฑ ๋ณด์กด ๋ฐฉ๋ฒ•: ๋ฉ”์‹œ์ง€ ์ธ์ฆ, ์ „์ž ์„œ๋ช…(Digital Signature)

Accountability (์ฑ…์ž„์ถ”์ ์„ฑ)

  • ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ํ–‰๋™์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ฒจ์„œ, ๋‚˜์ค‘์— ๊ณต๊ฒฉ์ด ์ผ์–ด๋‚˜๊ฑฐ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋ถ„์„ํ•ด์„œ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ฑ…์ž„์ถ”์ ์„ฑ์„ ํ•ด์น˜๋Š” ๊ณต๊ฒฉ: ์ง๋ฌด ์œ ๊ธฐ, ๊ถŒํ•œ ๋‚จ·์˜ค์šฉ ๋“ฑ
  • ์ฑ…์ž„์ถ”์ ์„ฑ ๋ณด์กด ๋ฐฉ๋ฒ•: ์‹œ์Šคํ…œ ๋กœ๊ทธ ๊ด€๋ฆฌ, ํฌ๋ Œ์‹ ๋ถ„์„ ๋“ฑ

1. ์›น ๊ธฐ์ดˆ

์›น์ด๋ž€?

์›น (Web, World Wide Web)

  • ์ธํ„ฐ๋„ท์„ ๊ธฐ๋ฐ˜์œผ๋กœ, HTTP๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์„œ๋น„์Šค
  • ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์ปดํ“จํ„ฐ๋“ค์ด ํ•˜์ดํผํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ํ‘œํ˜„๋œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ์ „ ์„ธ๊ณ„์ ์ธ ์‹œ์Šคํ…œ
  • ์›น ์„œ๋ฒ„(Web Server)์™€ ์›น ํด๋ผ์ด์–ธํŠธ(Web Client)๋กœ ๊ตฌ์„ฑ
    • ์›น ์„œ๋ฒ„: ์›น ์„œ๋น„์Šค์—์„œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฃผ์ฒด
    • ์›น ํด๋ผ์ด์–ธํŠธ: ์›น ์„œ๋น„์Šค์—์„œ ์ •๋ณด๋ฅผ ์ œ๊ณต๋ฐ›๋Š” ์ด์šฉ์ž

<์›น ๋™์ž‘ ์›๋ฆฌ์™€ ๊ตฌ์กฐ>


์›น ๋ฆฌ์†Œ์Šค

์›น์— ๊ฐ–์ถฐ์ง„ ์ •๋ณด ์ž์‚ฐ

ex) HTML(Hyper Text Markup Language), CSS(Cascading Style Sheets), JavaScript


HTTP์™€ HTTPS

<HTTP (HyperText Transfer Protocol)>

  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์š”์ฒญ(Request)๊ณผ ์‘๋‹ต(Response) ํ˜•์‹์œผ๋กœ ์ •์˜ํ•œ ํ”„๋กœํ† ์ฝœ
  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜๋ฉด, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต
  • ๋ฌธ์„œ ๊ฐ„์˜ ์ƒํ˜ธ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ํ…์ŠคํŠธ ๋ฐ ๋ฏธ๋””์–ด ์ œ๊ณต

<HTTP ๋ฉ”์‹œ์ง€>

  • HTTP ํ—ค๋“œ
    • ์ฒซ ์ค„์€ ์‹œ์ž‘ ์ค„(Start line), ๋‚˜๋จธ์ง€๋Š” ํ—ค๋”(Header)
    • ํ•„๋“œ์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ
    • HTTP ๋ฉ”์‹œ์ง€ ๋˜๋Š” ๋ฐ”๋””์˜ ์†์„ฑ ํ‘œํ˜„
  • HTTP ๋ฐ”๋””
    • ํ—ค๋“œ๊ฐ€ ๋๋‚œ ๋’ค์˜ ๋ชจ๋“  ์ค„์˜ ๋‚ด์šฉ
    • ํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„์— ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ

<HTTP ์š”์ฒญ(Request)>

  • ์„œ๋ฒ„์— ํŠน์ • ๋™์ž‘์„ ์š”๊ตฌํ•˜๋Š” ๋ฉ”์‹œ์ง€
  • HTTP ์š”์ฒญ์˜ ์‹œ์ž‘ ์ค„์€ ๋ฉ”์†Œ๋“œ(Method), ์š”์ฒญ URL, HTTP ๋ฒ„์ „์œผ๋กœ ๊ตฌ์„ฑ

 

<HTTP ์‘๋‹ต(Reaponse)>

  • HTTP ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์‹œ์ง€
  • ์š”์ฒญ์— ๋Œ€ํ•œ ์ƒํƒœ ์ •๋ณด์™€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ
  • HTTP ์‘๋‹ต์˜ ์‹œ์ž‘ ์ค„์€ HTTP ๋ฒ„์ „, ์ƒํƒœ ์ฝ”๋“œ(Status Code), ์ฒ˜๋ฆฌ ์‚ฌ์œ ๋กœ ๊ตฌ์„ฑ


<HTTPS (HTTPS over Secure socket layer)>

  • TLS๋ฅผ ์ด์šฉํ•˜์—ฌ HTTP์˜ ์ทจ์•ฝ์ ์„ ๋ณด์™„ํ•œ ํ”„๋กœํ† ์ฝœ
  • HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์€ ํ‰๋ฌธ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ์ทจ๋˜์—ˆ์„ ๋•Œ ์ •๋ณด ์œ ์ถœ ๊ฐ€๋Šฅ
    • Burp Suite๋กœ ํŒจํ‚ท์„ ํ™•์ธ → ID, Passowrd ๋“ฑ์ด ์œ ์ถœ๋  ์ˆ˜ ์žˆ์Œ
  • ์›น ์„œ๋ฒ„์˜ url์ด https://๋กœ ์‹œ์ž‘ → HTTPS ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉ

 

<TLS๋ฅผ ์ด์šฉํ•œ HTTP ์ทจ์•ฝ์  ๋ณด์™„>

TLS, Transport Layer Security

  • ์ „์†ก ๊ณ„์ธต์—์„œ ๋™์ž‘, client์™€ server ์‚ฌ์ด์— ์•ˆ์ „ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํŒจ๋„ ์ œ๊ณต
  • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์˜ค๊ฐ€๋Š” ๋ชจ๋“  HTTP ๋ฉ”์‹œ์ง€ ์•”ํ˜ธํ™”
  • TLS๋Š” ๋ชจ๋“  HTTP ๋ฉ”์‹œ์ง€ ์•”ํ˜ธํ™” → ํŒจํ‚ท ํƒˆ์ทจ ์‹œ ๊ทธ ๋‚ด์šฉ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†๋‹ค.

2. ์ฟ ํ‚ค & ์„ธ์…˜

์ฟ ํ‚ค & ์„ธ์…˜

<HTTP์˜ ํŠน์ง•>

  • Connectionless
    • ํ•˜๋‚˜์˜ ์š”์ฒญ์— ํ•˜๋‚˜์˜ ์‘๋‹ต์„ ํ•œ ํ›„ ์—ฐ๊ฒฐ ์ข…๋ฃŒ.
    • ์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ ์—ฐ๊ฒฐ
  • Stateless
    • ํ†ต์‹ ์ด ๋๋‚œ ํ›„ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์Œ

โ–ถ HTTP: Request๋ฅผ ๋ณด๋‚ด๊ณ  ๋‚˜๋ฉด ์ •๋ณด๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ฒ ๋‹ค.


<์ฟ ํ‚ค & ์„ธ์…˜>

  • ์›น ์„œ๋ฒ„๋Š” ์ˆ˜๋งŽ์€ ํด๋ผ์ด์–ธํŠธ์™€ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ํ†ต์‹ ํ•œ๋‹ค.
  • ๋กœ๊ทธ์ธํ•˜๋Š” ์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์„œ๋น„์Šค(ํŽ˜์ด์ง€)๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค.
  • ์›น ์„œ๋ฒ„: ํด๋ผ์ด์–ธํŠธ ๊ตฌ๋ณ„ ๋ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ๊ณผ User-Agent ์†์„ฑ์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ณ ์œ ํ•˜์ง€ ์•Š์€ ์ •๋ณด → ์›น ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ๊ธฐ์–ต ๋ถˆ๊ฐ€
  • ์ƒํƒœ ์œ ์ง€๋ฅผ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session) ์‚ฌ์šฉ

<์ฟ ํ‚ค (Cookie)>

  • ์ธ์ฆ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฏผ๊ฐํ•œ ์ •๋ณด ๋ณด๊ด€
  • ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์— ์ €์žฅ
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ์„œ๋น„์Šค์— ์ ‘์†ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ ์š”์ฒญ ์ „์†ก
  • ์ฟ ํ‚ค: ํ‚ค(Key) : ๊ฐ’(Value)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ผ์ข…์˜ ๋‹จ์œ„
  • ์ฒซ Request ์‹œ ์ฟ ํ‚ค ๋ฐœ๊ธ‰, ์ดํ›„ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ์ฟ ํ‚ค๋ฅผ ๊ฐ™์ด ์ „์†ก
  • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ํฌํ•จ๋œ ์ฟ ํ‚ค ํ™•์ธ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ๊ตฌ๋ถ„ ๊ฐ€๋Šฅ
  • ์ฟ ํ‚ค์˜ ๋ชฉ์ : ํด๋ผ์ด์–ธํŠธ ์ •๋ณด ๊ธฐ๋ก ๋ฐ ์ƒํƒœ ์ •๋ณด ํ‘œํ˜„

<์ฟ ํ‚ค (Cookie) ๋ณ€์กฐ>

  • ์ฟ ํ‚ค: ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ, ์š”์ฒญ์— ํฌํ•จ๋˜๋Š” ์ •๋ณด
  • ์•…์˜์ ์ธ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฟ ํ‚ค ์ •๋ณด ๋ณ€์กฐ ํ›„ ์„œ๋ฒ„์— ์š”์ฒญ ๋ณด๋‚ด๊ธฐ ๊ฐ€๋Šฅ
  • ๋งŒ์•ฝ, ์„œ๋ฒ„๊ฐ€ ๊ฒ€์ฆ ์—†์ด ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ ์ •๋ณด ์‹๋ณ„ ์‹œ ํƒ€ ์ด์šฉ์ž ์‚ฌ์นญ์œผ๋กœ ์ •๋ณด ํƒˆ์ทจ ๊ฐ€๋Šฅ

<์„ธ์…˜ (Session)>

  • ์ธ์ฆ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅ
  • ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ
  • ํ‚ค: ์ผ๋ฐ˜์ ์œผ๋กœ SessionID
  • ๋ธŒ๋ผ์šฐ์ €: SessionID๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅ → HTTP ์š”์ฒญ ๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ํ‚ค ๊ฐ’ ์‚ฌ์šฉ
  • ์„œ๋ฒ„: ์š”์ฒญ์— ํฌํ•จ๋œ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์ธ์ฆ ์ƒํƒœ ํ™•์ธ


SOP & CORS

<๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ… (Same Origin Policy(SOP))>

  • ์‚ฌ์šฉ์ž๊ฐ€ ์•…์˜์ ์ธ ํŽ˜์ด์ง€ ์ ‘์†
    • ํŽ˜์ด์ง€๊ฐ€ JS๋ฅผ ์ด์šฉํ•ด ์ด์šฉ์ž์˜ SNS ์›น์„œ๋น„์Šค๋กœ ์š”์ฒญ ์ „์†ก
    • ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํ•ด๋‹น ์›น ์„œ๋น„์Šค์˜ ์ฟ ํ‚ค๋ฅผ ํฌํ•จ
    • JS๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ ํŽ˜์ด์ง€๋Š” ๋กœ๊ทธ์ธ๋œ ์ด์šฉ์ž์˜ SNS ์‘๋‹ต์„ ๋ฐ›์„ ๊ฒƒ
    • ๋งˆ์Œ๋Œ€๋กœ ํŽ˜์ด์ง€ ์ ‘์†์ž์˜ SNS์— ๊ธ€์„ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ์‚ญ์ œ, ๋ฉ”์‹ ์ € ์ฝ๊ธฐ ๊ฐ€๋Šฅ
    • → ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ ๋ฐฉ์ง€ ์œ„ํ•ด์„œ SOP ๋“ฑ์žฅ
  • ๊ฐ™์€ ์ถœ์ฒ˜(Origin)์˜ ์„œ๋ฒ„๋กœ๋งŒ ์š”์ฒญ์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค
  • Sheme, Host, Port ๋ชจ๋‘ ๋™์ผํ•ด์•ผ ํ•จ


<Cross Origin Resource Sharing (CORS)>

  • ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋•Œ๋ฌธ์— ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  (Cross Origin Resource Sharing) ๋“ฑ์žฅ
  • Cross Origin ๊ฐ„์— ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • HTTP ํ—ค๋”
    • JSON

 

3. ๊ณต๊ฒฉ

์„œ๋ฒ„ ์‚ฌ์ด๋“œ (Server-Side)

  • ์„œ๋ฒ„ (์ œ๊ณต์ž) ์ธก์—์„œ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ
  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ, ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ด๊ณ  ์‘๋‹ตํ•˜๋Š” ์—ญํ• 
  • ์›น ์„œ๋ฒ„์—์„œ ํ•˜๋Š” ์ž‘์—…
  • ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ผ ์›น ํŽ˜์ด์ง€ ์ œ์ž‘
  • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๊ณต๊ฒฉ
    • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์„œ๋ฒ„ ๋‚ด์— ์กด์žฌํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์˜ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜, ์„œ๋ฒ„์˜ ๊ถŒํ•œ์„ ์žฅ์•…

ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ (Client-Side)

  • ํด๋ผ์ด์–ธํŠธ (์‚ฌ์šฉ์ž) ์ธก์—์„œ ์ฒ˜๋ฆฌ
  • ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ์—ญํ•  (ex. ์›น ํŽ˜์ด์ง€ ์š”์ฒญ)
  • ์›น์—์„œ์˜ ํด๋ผ์ด์–ธํŠธ = ์›น ๋ธŒ๋ผ์šฐ์ €
  • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๊ณต๊ฒฉ
    • ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์ด์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์„ธ์…˜ ๋ฐ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•˜๊ณ  ํ•ด๋‹น ๊ณ„์ •์œผ๋กœ ์ž„์˜์˜ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰

๊ณต๊ฒฉ ์œ ํ˜•

ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ (Client-Side) ์„œ๋ฒ„ ์‚ฌ์ด๋“œ (Server-Side)
Brute Force, Dictionary Attack

Cross-Site Scripting (XSS)

CSRF
Injection (SQL Injection, Command Injection ๋“ฑ)

File Vulnerability (File Inclusion, File Upload ๋“ฑ)

 

Brute Force

  • ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ, ํŠน์ • ์•”ํ˜ธ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ’์„ ๋Œ€์ž…
  • ๋Œ€๋ถ€๋ถ„์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ์ด๋ก ์ ์œผ๋กœ ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๊ณต๊ฒฉ์— ์•ˆ์ „ํ•˜์ง€ ๋ชปํ•˜๋ฉฐ, ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์•”ํ˜ธํ™”๋œ ์ •๋ณด๋ฅผ ํ•ด๋… ๊ฐ€๋Šฅ

Dictionary Attack

  • ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ์•Œ์•„๋‚ด๊ฑฐ๋‚˜ ํ•ด๋…ํ•˜๋Š” ์ปดํ“จํ„ฐ ๊ณต๊ฒฉ๋ฒ•
  • ์‚ฌ์ „์— ์žˆ๋Š” ๋‹จ์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž…๋ ฅ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ apple123์ด๋ผ๋ฉด dictionary์—์„œ apple123์„ ์ฐพ์Œ
    • ์ผ๋ฐ˜์ ์œผ๋กœ brute force๋ณด๋‹ค ๋น ๋ฅด์ง€๋งŒ, erjelrj124 ๊ฐ™์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์“ด๋‹ค๋ฉด ํšจ๊ณผ์ ์ด์ง€ X

XSS

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์ทจ์•ฝํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์ชฝ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๊ธฐ๋ฒ•

CSRF

  • CSRF(Cross site Request Forgery): ์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ
  • ํ”ผ์‹ฑ์„ ํ™œ์šฉํ•ด ์‚ฌ์šฉ์ž ๋ชจ๋ฅด๊ฒŒ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ”ผ์‹ฑ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋Š” ์‹œ์ ์— ํ•ด์ปค๊ฐ€ ์›ํ•˜๋Š” ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ๋˜์–ด์žˆ์–ด์•ผ ์„ฑ๊ณต → ๋กœ๊ทธ์ธ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—ฌ์•ผ ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ

SQL Injection

  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ „์†ก๋˜๋Š” SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์กฐ์ž‘ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์กฐํ•˜๊ฑฐ๋‚˜ ํ—ˆ๊ฐ€๋˜์ง€ ์•Š์€ ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ
  • ์˜ˆ์ „๋ถ€ํ„ฐ ์ตœ๊ทผ๊นŒ์ง€ ๊พธ์ค€ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์›น ๊ณต๊ฒฉ

Command Injection

  • OS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด (OS command)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•จ๊ป˜ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ์‰˜ ๋ช…๋ น์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ charcter(; | & ๋“ฑ)๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ๋ช…๋ น์–ด๋ฅผ ํ•ด์ปค๊ฐ€ ์ž„์˜๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ๊ณต๊ฒฉ

File Inclusion

  • PHP์—์„œ include() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง€์ •ํ•œ ํŒŒ์ผ์„ ์ง์ ‘ ์†Œ์Šค์ฝ”๋“œ์— ์‚ฝ์ž…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ณต๊ฒฉ ์œ ํ˜•
  • LFI(Local File Includion): ์ด๋ฏธ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ include
  • RFIL(Remote File Inclusion): ์™ธ๋ถ€์— ์žˆ๋Š” ํŒŒ์ผ์„ ์›๊ฒฉ์œผ๋กœ include, LFI๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•œ ๊ณต๊ฒฉ

File Upload

  • ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด ์‹œ๋„ ๊ฐ€๋Šฅ
  • ํŒŒ์ผ์ด ์—…๋กœ๋“œ๋˜๋Š” ํŽ˜์ด์ง€(๊ฒŒ์‹œํŒ, SNS ๋“ฑ)์— ์•…์„ฑ ํŒŒ์ผ(์›น์‰˜)์„ ์—…๋กœ๋“œ
  • ๊ณต๊ฒฉ ๊ณผ์ •
    1. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œํ•˜๋Š” ๊ณณ์ด ์กด์žฌ
    2. ํ•ด์ปค๊ฐ€ ์ด๋ฏธ์ง€ ๋Œ€์‹  ์›น์…€์„ ์—…๋กœ๋“œ
    3. ์ด๋ฏธ์ง€ ํŒŒ์ผ์ธ์ง€ ์ œ๋Œ€๋กœ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์›น์‰˜์ด ์ €์žฅ
    4. ํ•ด์ปค๊ฐ€ ์›น์‰˜์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด ์›น์‰˜์ด ์‹คํ–‰

์ฝ”๋“œ ์ฝ๋Š” ๋ฒ• (Python Flask)

ํŒŒ์ด์ฌ Flask

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํŒŒ์ด์ฌ ํ”„๋ ˆ์ž„์›Œํฌ

 

Route ๊ธฐ๋Šฅ

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘๊ทผ ์‹œ, ์ž…๋ ฅํ•˜๋Š” ์ฃผ์†Œ์— ๋”ฐ๋ผ ํŠน์ • ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ํ•จ

 

์ฝ”๋“œ ์ฝ๋Š” ๋ฒ• (python Flask)

 

GET, POST ๋ฉ”์†Œ๋“œ

์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก๋ฐ›๋Š” ๋ฐฉ์‹

  • GET: ๋ฐ์ดํ„ฐ๋ฅผ URL์— ํฌํ•จํ•ด ์š”์ฒญ
  • POST: URL์— ํฌํ•จํ•˜์ง€ ์•Š๊ณ  HTTP ํ—ค๋” ๋ณธ๋ฌธ์—์„œ ์š”์ฒญ

request.args.get()
: GET ์š”์ฒญ์ผ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

request.from.get()
: POST ์š”์ฒญ์ผ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

 

ํ•„ํ„ฐ๋ง

XSS, CSRF, Injection ๋“ฑ์˜ ๊ณต๊ฒฉ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ํ‚ค์›Œ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒฝ์šฐ ๋งŽ์Œ


๊น€์ข…๊ธธ ๊ต์ˆ˜๋‹˜ ์›น ๋ณด์•ˆ ๋ฐ ์‹ค์Šต ๊ฐ•์˜์ž๋ฃŒ
ํ™”์ดํŠธ ํ•ด์ปค๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ 8๊ฐ€์ง€ ์›น ํ•ดํ‚น ๊ธฐ์ˆ 

https://sangwoo0727.github.io/web/Web-2.webApp/

'E-COPS > 14th ๋น„๊ธฐ๋„ˆ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

5. ๋””์ง€ํ„ธ ํฌ๋ Œ์‹  (2) 2024.09.12
4. ์‹œ์Šคํ…œ ํ•ดํ‚น  (2) 2024.09.12
3. ์•”ํ˜ธ  (2) 2024.09.07
2. ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ  (2) 2024.09.01

+ Recent posts