Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋””/๋ชจ์˜ ํ•ดํ‚น - ๊ธฐ๋ก์ผ์ง€

[๊ธฐ๋ก์ผ์ง€] ๐Ÿ“š 03์ฃผ์ฐจ (๋กœ๊ทธ์ธ ๋กœ์ง/์œ ์ง€)

Gearvirus(junyup2) 2023. 11. 8. 23:08

๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ์ดํ•ด


๋กœ๊ทธ์ธ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์ปดํ“จํ„ฐ์— ์‚ฌ์šฉ์ž์ž„์„ ์•Œ๋ฆฌ๋Š” ์ผ์ด๋‹ค.

(์ฆ‰, ์ปดํ“จํ„ฐ๊ฐ€ ๊ทธ ์‚ฌ๋žŒ์ด ๋งž๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์ž‘์—…)

  • ๋กœ๊ทธ์ธ์˜ ๊ณผ์ •์— ์‹๋ณ„๊ณผ ์ธ์ฆ์˜ ๋‘ ๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.
    • ์‹๋ณ„ / ์ธ์ฆ

๊ทธ๋ ‡๋‹ค๋ฉด ์‹๋ณ„์€ ๋ฌด์—‡์ด๊ณ , ์ธ์ฆ์€ ๋ฌด์—‡์ธ๊ฐ€? (๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€?)

 

์‹๋ณ„์ด๋ž€?

์‹๋ณ„ (Identification) : ์ˆ˜๋งŽ์€ ๋ฐ์ดํ„ฐ ์ค‘์— ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ด๋Š”(๊ฐ€๋ ค๋‚ด๋Š”) ๊ฒƒ

  • ex) ํšŒ์› ์ •๋ณด์—์„œ ์ˆ˜๋งŽ์€ ๊ณ ๊ฐ ์ค‘์— ํŠน์ •์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋‚ด๋ ค๋ฉด, ์ด๋ฆ„๊ณผ ๊ฐ™์ด ๋™๋ช…์ด์ธ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ๋Š” ์‹๋ณ„ ๋ถˆ๊ฐ€๋Šฅ. (๋”ฐ๋ผ์„œ '์•„์ด๋””'๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ)
  • ์œ„์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์‹๋ณ„์ •๋ณด๋Š” ์ค‘๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์œ ๋‹ˆํฌ(Unique)ํ•œ ๊ฐ’์ด์—ฌ์•ผ ํ•จ
  •  ex) ID๋Š” PK๋กœ ์„ค์ •๋˜์–ด ์ด๋ฏธ DB์— ์กด์žฌํ•˜๋ฉด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋„๋ก, ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์„ค์ •
    • (PK๋Š” ์ ˆ๋Œ€๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ๋˜๋Š” ์„ค์ •)

 


๊ทธ๋ ‡๋‹ค๋ฉด ์‹๋ณ„ ์ •๋ณด์—๋Š” ์–ด๋–ค๊ฒƒ์ด ์žˆ์„๊นŒ?

์‹๋ณ„์ •๋ณด๋Š” ํ†ต์ƒ์ ์ธ ์‹๋ณ„ ์ •๋ณด์™€ ๊ณ ์œ  ์‹๋ณ„ ์ •๋ณด๊ฐ€ ์กด์žฌ

 

์‹๋ณ„ ์ •๋ณด vs ๊ณ ์œ  ์‹๋ณ„ ์ •๋ณด

๋ฌด์Šจ ์ฐจ์ด์ผ๊นŒ?

  • ์‹๋ณ„์ •๋ณด๋ผ๋Š” ๊ฒƒ์€ ๋ˆ„๊ตฌ๋‚˜๊ฐ€ ๋ด๋„, ๋ˆ„๊ตฌ์—๊ฒŒ ๊ณต๊ฐœ๋˜์–ด๋„, ์ƒ๊ด€์ด์—†๋Š” ์ •๋ณด
  • BUT ! , ๊ณ ์œ  ์‹๋ณ„ ์ •๋ณด๋Š” ๋…ธ์ถœ์ด๋˜๋ฉด ์œ„ํ—˜ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋จ
  • ๊ณ ์œ  ์‹๋ณ„ ์ •๋ณด๋Š” ์ด ์ •๋ณด๋งŒ ๊ฐ€์ง€๊ณ ๋„, ์ด ์„ธ์ƒ(ํ˜น์€ ๊ตญ๋‚ด)์—์„œ ๊ทธ ์‚ฌ๋žŒ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด
  • ex) ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์šด์ „๋ฉดํ—ˆ๋ฒˆํ˜ธ, ์—ฌ๊ถŒ๋ฒˆํ˜ธ (ํ†ต์ƒ์ ์œผ๋กœ ๋ณธ์ธํ™•์ธ์„ ์œ„ํ•œ ์‹ ๋ถ„์ฆ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค)

 

๋”ฐ๋ผ์„œ ์›น ํŒจํ‚ท์„ ๋ถ„์„ํ•˜๋‹ค ๋ณด๋‹ˆ ID, ์‚ฌ๋ฒˆ์ด ๋…ธ์ถœ๋œ๋‹ค๋ฉด?
์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ
๋งŒ์•ฝ ์›น ํŒจํ‚ท ๋ถ„์„ ์ค‘์— ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๊ฐ€ ํ‰๋ฌธ์œผ๋กœ ์™”๋‹ค๊ฐ”๋‹ค ํ•œ๋‹ค๋ฉด?
๊ณ ์œ ์‹๋ณ„์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ทจ์•ฝ์ ์ด๋ผ๊ณ  ํŒ๋‹จ!!

์ธ์ฆ์ด๋ž€?

์ธ์ฆ(Authentication) : ๊ทธ ์‚ฌ๋žŒ์ด ๋ณธ์ธ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…

  • ์ธ์ฆ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ
  • ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ์ •๋ณด : ๋น„๋ฐ€๋ฒˆํ˜ธ (์•„์ด๋””๋Š” ์‹๋ณ„์ •๋ณด)

๋กœ๊ทธ์ธ์ด๋ž€?

๋กœ๊ทธ์ธ์€ ์œ„์˜ ์‹๋ณ„๊ณผ ์ธ์ฆ์„ ๋ชจ๋‘ ์ด์šฉํ•˜๋Š” ๊ฒƒ

  • ๋กœ๊ทธ์ธ == ์‹๋ณ„ + ์ธ์ฆ -> ID์™€ PW๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ ํ•œ๋‹ค๋Š” ๊ฒƒ
  • ์‹๋ณ„์€ ์ˆ˜๋งŽ์€ ์‚ฌ๋žŒ๋“ค ์ค‘ ๊ทธ ์‚ฌ๋žŒ์„ ์ง‘์–ด๋‚ด๋Š” ๊ฒƒ์ผ ๋ฟ
  • ์ง‘์–ด๋‚ด๊ธฐ๋งŒ ํ•ด์„œ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์Œ
  • ๊ทธ ์‚ฌ๋žŒ์ด ๋งž๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”. ๊ทธ๊ฒƒ์ด ์ธ์ฆ!

๋กœ๊ทธ์ธ ๋กœ์ง

  • select * from member where id='gear' (์‹๋ณ„)
  • -> ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธ (์ธ์ฆ)
  • (์‹๋ณ„๊ณผ ์ธ์ฆ์˜ ์ฐจ์ด ๋•Œ๋ฌธ์— ์•„์ด๋””๋Š” ๋…ธ์ถœ๋˜๋„ ์ƒ๊ด€์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ์‹œ์— ๊ทธ๋Œ€๋กœ ์ž…๋ ฅ๋˜์ง€๋งŒ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณ„(*)๋กœ์„œ ํ‘œ๊ธฐ๋˜๋Š” ๊ฒƒ)
์ธ์ฆ ์ •๋ณด๋Š” ์ ˆ๋Œ€๋กœ ํƒ€์ธ์—๊ฒŒ ์•Œ๋ ค์ฃผ์–ด์„œ๋Š” ์•ˆ๋จ!!
(์ธ์ฆ ์ •๋ณด๋Š” ๋ณดํ˜ธํ•ด์•ผ ํ•จ)
๊ฒฐ๋ก  : ์ธ์ฆ์ •๋ณด๋Š” ์œ ์ถœ๋˜๋ฉด ์œ„ํ—˜ !!

 


์‹๋ณ„๊ณผ ์ธ์ฆ์„ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ์€ ์–ด๋–ค์‹์œผ๋กœ ๋งŒ๋“ค์–ด ์ง€๋Š”๊ฐ€?

 

๋กœ๊ทธ์ธ ๋กœ์ง ์ผ€์ด์Šค

  • (๋กœ๊ทธ์ธ์˜ ๋กœ์ง์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ์‹๋ณ„๊ณผ ์ธ์ฆ์€ ํ•„์ˆ˜, ๊ทธ ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ๋ฟ)

(1) ์‹๋ณ„ / ์ธ์ฆ ๋™์‹œ 

  • DB ์งˆ์˜๋ฅผ ํ•œ๋ฒˆ์— ์ˆ˜ํ–‰ํ•˜์—ฌ ๋กœ๊ทธ์ธ ๊ตฌํ˜„.
  • (์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•œ๋ฒˆ์— ํ™•์ธ)
$sql = "select * from member where"
$sql .="id='$user_id' and pass='$user_pass"

"select * from member where id='____' and pass='____"

$sql.execute();
if($ret){
   // ๋กœ๊ทธ์ธ ์„ฑ๊ณต
}else{
   // ๋กœ๊ทธ์ธ ์‹คํŒจ
}
  • ์•„์ด๋”” and ๋น„๋ฐ€๋ฒˆํ˜ธ correct -> ๋‹ต์ด ๋‚˜์˜ด
  • ์•„์ด๋”” or ๋น„๋ฐ€๋ฒˆํ˜ธ uncorrect -> ๋‹ต์ด ์•ˆ๋‚˜์˜ด
  • ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ฉด (if($ret)์ด ์ฐธ์ด๋ฉด) ์„ฑ๊ณต ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹คํŒจ (๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋ƒ ์•ˆ ๋‚˜์˜ค๋ƒ)

(2) ์‹๋ณ„ / ์ธ์ฆ ๋ถ„๋ฆฌ

sql = select * from member where id='____'
//(or) select pass from member where id='____'
//------> ์‹๋ณ„
$db_pass = sql.ret['pass']

if($db_pass == $user_pass){
	// ๋กœ๊ทธ์ธ ์„ฑ๊ณต
}else{
	//๋กœ๊ทธ์ธ ์‹คํŒจ
}
//------> ์ธ์ฆ
  • ๋จผ์ € ์•„์ด๋””๋ฅผ ์ด์šฉํ•œ ์‹๋ณ„๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ , ์ดํ›„์— ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ธ์ฆ ๊ณผ์ •์„ ๊ฑฐ์นจ

(+) HASH

 

HASH๋ž€?

 

ํ•ด์‹œ ํ•จ์ˆ˜(Hash function) : ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ•จ์ˆ˜

  • ๋‹จ๋ฐฉํ–ฅ ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „์˜ ํ‰๋ฌธ์„ ์•Œ ์ˆ˜๊ฐ€ ์—†์Œ
    • (๋…ธ์ถœ๋˜์–ด๋„ ํ•œ ๋ฒˆ์€ ์•ˆ์ „)
  • ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ญ”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, hash๋กœ ๋ฐ”๊พธ๊ณ  ๋‚˜๋ฉด ๊ฐ™์€์ง€ ์•„๋‹Œ์ง€๋Š” ํ™•์ธ์ด ๊ฐ€๋Šฅ

 

๊ทธ๋Ÿผ ์•”ํ˜ธํ™”์™€๋Š” ๋‹ค๋ฅธ๊ฒƒ์ธ๊ฐ€?

์•”ํ˜ธํ™”(enciphering, encryption) : ์–ด๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์ƒํ•œ ๋ฌธ์ž์˜ ๊ธ€์ž๋กœ ๋‚ด์šฉ์„ ๋ชจ๋ฅด๊ฒŒ ๋ชจ์–‘/ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ๊ฒƒ

์ธ์ฝ”๋”ฉ(encoding) : ์–ด๋–ค ๋ฐ์ดํ„ฐ์˜ ๋ชจ์–‘/ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ๊ฒƒ (๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด์„œ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉ)

ํ•ด์‹œ(hash) : ์–ด๋–ค ๋ฐ์ดํ„ฐ์˜ ๋ชจ์–‘/ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ๊ฒƒ

  • ๋ชจ์–‘๊ณผ ํ˜•ํƒœ๋ฅผ ๋ฐ”๊พผ๋‹ค๋Š” ๊ฒƒ์— ์žˆ์–ด์„œ 3๊ฐ€์ง€๊ฐ€ ๋น„์Šทํ•œ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด ์กด์žฌ
  • ์•”ํ˜ธํ™”์™€ ์ธ์ฝ”๋”ฉ์€ ๋ณตํ˜ธํ™”์™€ ๋””์ฝ”๋”ฉ์ด๋ผ๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์›์ƒ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ
  • ํ•ด์‹œ๋Š” ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๊ฐ€๋Šฅํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ๊ธฐ์กด์˜ ๋ชจ์–‘/ํ˜•ํƒœ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์—†์Œ

 

(3),(4) (์‹๋ณ„/์ธ์ฆ) ๋™์‹œ · ๋ถ„๋ฆฌ (+) HASH

  • ๋”ฐ๋ผ์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ• ๋•Œ HASHํ™” ํ•ด์„œ ์ด์šฉ
  • ๋กœ๊ทธ์ธ์— ์ง€์žฅ X
  • ๋น„๊ตํ•˜๋Š”๋ฐ ๋ฌธ์ œ X
  • ๋งŒ์•ฝ DB๊ฐ€ ํ„ฐ์กŒ์„ ๋•Œ(ํ•ดํ‚น ๋‹นํ–ˆ์„ ๋•Œ) ํ•ด์‹œ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์œผ๋ฉด ํ•œ๋ฒˆ์€ ์•ˆ์ „ํ•จ
  • (๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋˜์–ด ์žˆ๋‹ค๋ฉด) ํฌ๋ฆฌ๋ด์…œ ์Šคํ„ฐํ•‘์˜ ์œ„ํ—˜์ด ์กด์žฌ
  • (hash๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํฌ๋ฆฌ๋ด์…œ ์Šคํ„ฐํ•‘์œผ๋กœ ๋ถ€ํ„ฐ ๋ณดํ˜ธ)

 

๋กœ๊ทธ์ธ ๋กœ์ง ์ผ€์ด์Šค (1) ~ (4) ๊ตฌํ˜„ 

๋กœ๊ทธ์ธ ๋กœ์ง์— ๋Œ€ํ•œ ๊ณ ๋ฏผ


๋กœ๊ทธ์ธ ์œ ์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ดํ•ด

๋กœ๊ทธ์ธ ์œ ์ง€ 

 

์–ด๋–ค ์‚ฌ์ดํŠธ์— ํ•œ ๋ฒˆ ๋กœ๊ทธ์ธ ํ•˜๊ณ  ๋‚˜๋ฉด, ์‚ฌ์ดํŠธ ๋‚ด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋“ค์„ ์ ‘์†ํ•  ๋•Œ ๋กœ๊ทธ์ธ์ด ์œ ์ง€๋˜๊ฑฐ๋‚˜, ํ˜น์€ ID/PW๊ฐ€ ๊ธฐ์–ต๋˜์–ด ๋‚˜์ค‘์— ์žฌ์ ‘์†ํ•˜๋”๋ผ๋„ ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์ž๋™ ๋กœ๊ทธ์ธ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ

๋ฐ˜๋ฉด, ๋ช‡ ๋ถ„ ์ •๋„ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋ฉฐ ๋กœ๊ทธ์ธ์„ ๋‹ค์‹œํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Œ

์™œ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ๊นŒ?

HTTP์˜ ํŠน์„ฑ

  • HTTP๋Š” ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ์œ„ํ•œ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š” ํ”„๋กœํ† ์ฝœ๋กœ์„œ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ(request)๋ฅผ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ์‘๋‹ต(response)๋ฅผ ๋ณด๋ƒ„์œผ๋กœ์จ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜
  • HTTP๋Š” ๋น„์—ฐ๊ฒฐ์„ฑ(connectionless), ๋ฌด์ƒํƒœ์„ฑ(stateless)์ด๋ผ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
  • HTTP๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ฒ˜๋ฆฌ ์™„๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด, ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฐ๋‹ค๋Š” ๊ฒƒ
  • ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ด์ „์˜ ์ƒํƒœ ์ •๋ณด ๋ฐ ํ˜„์žฌ ํ†ต์‹ ์˜ ์ƒํƒœ๊ฐ€ ๋‚จ์•„์žˆ์ง€ ์•Š๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ
1) Connectionless Protocol ๋น„์—ฐ๊ฒฐ์ง€ํ–ฅ(๋น„์—ฐ๊ฒฐ์„ฑ)
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ–ˆ์„ ๋•Œ, ๊ทธ ์š”์ฒญ์— ๋งž๋Š” ์‘๋‹ต์„ ๋ณด๋‚ธ ํ›„ ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฌ๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹

2) Stateless Protocol ๋ฌด์ƒํƒœ์„ฑ(์ƒํƒœ ์ •๋ณด ์œ ์ง€ ์•ˆํ•จ)
ํด๋ผ์ด์–ธํŠธ์™€ ์ฒซ๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค ํ•˜๋”๋ผ๋„, ๋‘๋ฒˆ์งธ ํ†ต์‹ ์—์„œ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ
  • ์„œ๋ฒ„๋Š” ๋‹ค์ˆ˜์˜ ํด๋ผ์ด์–ธํŠธ์™€ ์—ฐ๊ฒฐ์„ ๊ณ„์† ์œ ์ง€ํ•˜๊ฒŒ ๋˜๋ฉด ์ž์› ๋‚ญ๋น„๊ฐ€ ๋’ค๋”ฐ๋ฅด๊ฒŒ ๋จ
  • ๋น„์—ฐ๊ฒฐ์„ฑ ๋ฐ ๋ฌด์ƒํƒœ์„ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง์œผ๋กœ์จ ์ž์› ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š” ๊ฒƒ
  • ๊ทธ๋Ÿฌ๋‚˜, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ
  • ๋กœ๊ทธ์ธ์„ ํ•˜๋”๋ผ๋„, ๋‹ค์Œ ์š”์ฒญ์—์„œ๋Š” ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ๋˜ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ
  • ํ•œ ๋ฒˆ ๋กœ๊ทธ์ธ์„ ํ•œ๋‹ค๋ฉด ์žฅ์‹œ๊ฐ„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ๋กœ๊ทธ์ธ์€ ์œ ์ง€๋˜์–ด์•ผ ํ•จ
    • (๋•Œ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์ธ์„ ๋‹ค์‹œํ•ด์•ผ ํ•œ๋‹ค๋ฉด.... ์ƒ์ƒํ•˜๊ธฐ ํž˜๋“ฌ)

๊ทธ๋ ‡๋‹ค๋ฉด ๋กœ๊ทธ์ธ์€ ์–ด๋–ป๊ฒŒ ์œ ์ง€ํ•˜๋Š”๊ฐ€?

HTTP์˜ ๋น„์—ฐ๊ฒฐ์„ฑ ๋ฐ ๋ฌด์ƒํƒœ์„ฑ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค(Cookie) ์™€ ์„ธ์„ (Session)์ด ์‚ฌ์šฉ๋จ

 

์ฟ ํ‚ค์™€ ์„ธ์…˜

 

์ฟ ํ‚ค(Cookie)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋‚˜ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์— ์„ค์น˜๋˜๋Š” ์ž‘์€ ๊ธฐ๋ก ์ •๋ณด ํŒŒ์ผ
  • ์ฟ ํ‚ค๋Š” Set-Cookie HTTP ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋˜๋ฉฐ, ์ด๋Š” ์›น ์„œ๋ฒ„์˜ HTTP ์‘๋‹ต์„ ํ†ตํ•ด ์†ก์‹ ๋˜๊ณ , ์ด ํ—ค๋”๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฐจ๊ธฐ ์„œ๋ฒ„ ์š”์ฒญ์‹œ ์†ก์‹ ํ• ์ง€๋ฅผ ์ง€์‹œ

 

  • ์ดˆ์ฐฝ๊ธฐ์˜ ์›น์„œ๋ฒ„๋Š” ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉ
    • ๊ทธ๋Ÿฐ๋ฐ ์ฟ ํ‚ค์—๋Š” ์น˜๋ช…์ ์ธ ๋ฌธ์ œ๊ฐ€ ์กด์žฌ
์ฟ ํ‚ค์˜ ์ถœ๋ฐœ์ง€๋Š” ํด๋ผ์ด์–ธํŠธ
-> ์‚ฌ์šฉ์ž๋Š” ํด๋ผ์ด์–ธํŠธ
    -> ์•„์ด๋Ÿฌ๋‹ˆํ•˜๊ฒŒ๋„ ํ•ด์ปค๋„ ์ด์šฉ์ž์ด๊ธฐ์— ํด๋ผ์ด์–ธํŠธ
        -> '์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ์ธก์— ์ž์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—'
            -> ๋งˆ์Œ๊ป ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ

 

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

์„ธ์…˜(Session)

  • ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๋กœ, ์„ธ์…˜์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ธ์ž ์„ธ์…˜ID๊ฐ€ ์ฟ ํ‚ค์— ๋“ค์–ด๊ฐ€์„œ ์ „๋‹ฌ๋จ
  • ๊ทธ๋Ÿฐ๋ฐ? ์„ธ์…˜ ID๋Š” ์ฟ ํ‚ค์— ๋“ค์–ด๊ฐ
  • ๊ทธ๋Ÿผ ์ฟ ํ‚ค์— ์žˆ์œผ๋‹ˆ๊นŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ๋ฐ”๊ฟ€ ์ˆ˜์•ผ ์žˆ๊ฒ ์ง€๋งŒ ์„ธ์…˜ ID๋Š” 1,2,3,4 ์™€ ๊ฐ™์ด ๋‹จ์ˆœํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋žœ๋คํ•œ ๋ฌธ์ž์˜ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ
    • ex) Cookie : PHPSESSIONID=02FE05158021DCA9080AFE40C5BAE15A
    • (์œ ์ถ”ํ•  ์ˆ˜ ์—†๋Š” ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ์ผ๋ จ์˜ ๋ฌธ์žํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ)

 

๊ทธ๋ ‡๋‹ค๋ฉด ์„ธ์…˜ ID ๋Š” ์ฟ ํ‚ค์— ๋“ค์–ด๊ฐ”๋Š”๋ฐ ์œ„ํ—˜์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๊ฐ€? NOPE ๊ทธ๋ ‡์ง€ ์•Š์Œ.

์ฟ ํ‚ค์˜ ์„ธ์…˜ ์•„์ด๋””๋ฅผ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋ฉด ID/PW ์—†์ด ๋กœ๊ทธ์ธ์ด ๋จ

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์ปค๋Š” ์„ธ์…˜ ID๋ฅผ ์•Œ์•„๋‚ด๋ ค ํ•จ
์„ธ์…˜ ํƒˆ์ทจ ! (์„ธ์…˜ ID๋ฅผ ํ›”์น˜๋Š” ๊ฒƒ)

 

  • ์ฐพ์•„์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š”๋ฐ ์™œ ํ›”์น˜๋ ค ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?
    • ๋ˆ„๊ตฐ๊ฐ€ ๋กœ๊ทธ์ธํ•ด ์žˆ๋‹ค๋ฉด ์„ธ์…˜ ID๋Š” ์ฟ ํ‚ค์— ๋“ค์–ด๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๊ณ ,
    • ๊ทธ๊ฒƒ์„ ํƒˆ์ทจํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ
  • (๊ทธ๋Ÿผ ๋„ˆ๋ฌด ์ทจ์•ฝํ•œ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€? ์‹ถ์ง€๋งŒ ์ด๊ฒƒ์€ HHTP์—์„œ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ HTTPS์—์„œ๋Š” SSL์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „)

 

๊ทธ๋Ÿฐ๋ฐ ์ฟ ํ‚ค์— ์„ธ์…˜ ๊ฐ’์„ ๋ณด๊ด€ํ•ด์„œ ๋กœ๊ทธ์ธ ํ• ๊ฑฐ๋ฉด, ๊ทธ๋ƒฅ ์ฟ ํ‚ค๋กœ๋งŒ ๋กœ๊ทธ์ธ ์œ ์ง€์‹œ์ผœ๋„ ๋˜์ง€์•Š์„๊นŒ?

  • ์ฟ ํ‚ค๋กœ๋งŒ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ์œ„ํ—˜์ด ํฌ๊ฒŒ ์กด์žฌ
    • ex) ๊ณต์œ  PC ์ ‘๊ทผ, ๊ณต์œ  PC์— ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ์ฟ ํ‚ค ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ํ•ด๋‹น PC์—์„œ ์ฟ ํ‚ค๋ฅผ ๋ˆ„๊ตฌ๋‚˜ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ ํ†ตํ•ด ์–ธ์ œ ์–ด๋””์„œ๋“  ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ
    • ๋”ฐ๋ผ์„œ ์„ธ์…˜์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋ณธ๋‹ค๊ณ  ํ•ด๋„ ์œ ์ถ”ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ

๊ทธ๋ ‡๋‹ค๋ฉด ์ฐจ๋ผ๋ฆฌ ์ฟ ํ‚ค๋ฅผ ์•ˆ์“ฐ๊ณ  ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ์–ตํ•ด์„œ ์„ธ์…˜(Session)์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

  • ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅ
    • ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ๋งˆ๋•…ํžˆ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๋งค๊ฐœ์ฒด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ
  • ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ HTTP๋Š” ๋ฌด์ƒํƒœ์„ฑ์ด๋ผ๋Š” ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ์Œ
    • ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ
    • BUT ! ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์‹๋ณ„์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์„ธ์…˜ ID๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜ ๋กœ๊ทธ์ธ ๋ฐฉ์‹์€ ์™„๋ฒฝํ•œ ๋ฌด์ƒํƒœ์„ฑ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์—†์Œ
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜จ ๊ธฐ์ˆ  JWT
  • ๋ฌด์ƒํƒœ์„ฑ์„ ์ถ”๊ตฌํ•˜๋ ค๋ฉด JWT ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ๋กœ๊ทธ์ธ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”(๊ณต๊ฐœํ‚ค-๋น„๋ฐ€ํ‚ค) ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ์•„์˜ˆ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„

 

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - ๊ณผ์ œ 03์ฃผ์ฐจ(3) - jwt


 

 

์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜