216.73.216.168 TODAY : 4,268

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ๊ณ ๊ธ‰

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 5์ฃผ์ฐจ: RESTful API ๋ณด์•ˆ ๋ฐ ์ธ์ฆ - 01 API ํ‚ค, ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ (JWT)

๐Ÿ“š PHP ๊ณ ๊ธ‰ - 5์ฃผ์ฐจ: RESTful API ๋ณด์•ˆ ๋ฐ ์ธ์ฆ - 01 API ํ‚ค, ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ (JWT)
ํ‰์  10.0 ๋ผ์ด์„ผ์Šค free
์‚ฌ์šฉ์žํ‰์  10.0 ์šด์˜์ฒด์ œ
๋‹ค์šด๋กœ๋“œ 1 ํŒŒ์ผํฌ๊ธฐ 0
์ œ์ž‘์‚ฌ LUZENSOFT ๋“ฑ๋ก์ผ 2025-09-14 15:39:19
์กฐํšŒ์ˆ˜ 2
- ์„ค๋ช…

RESTful API ๋ณด์•ˆ์˜ ํ•„์š”์„ฑ

uploadImage


์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์›น ์„œ๋น„์Šค๋Š” RESTful API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ค‘์š”ํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด๋‚˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์–ด, #API๋ณด์•ˆ ์€ ํ•„์ˆ˜์ ์ด๋‹ค. ํŠนํžˆ #์ธ์ฆ ๊ณผ #์ธ๊ฐ€ ๋Š” ๋ณด์•ˆ์˜ ํ•ต์‹ฌ์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๊ณ  (์ธ์ฆ), ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ž์›์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ (์ธ๊ฐ€) ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.



1. API ํ‚ค๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ


๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ API ๋ณด์•ˆ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋Š” #APIํ‚ค ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. API ํ‚ค๋Š” ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐœ๊ธ‰๋˜๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด์ด๋‹ค. ๋งˆ์น˜ ๊ฑด๋ฌผ์˜ ์—ด์‡ ์™€ ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.



์žฅ์ 


  • ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด๋‹ค.

  • ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค๋‚˜ ๋น„๊ณต๊ฐœ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œํ•œ์— ์ ํ•ฉํ•˜๋‹ค.



๋‹จ์ 


  • ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.

  • ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ URL ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ํ—ค๋”์— ํฌํ•จ๋˜์–ด ์ „์†ก๋˜๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ ์Šค๋‹ˆํ•‘(sniffing) ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ํ‚ค ๊ด€๋ฆฌ ๋ฐ ๊ฐฑ์‹ ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค.



2. ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ (JWT)


API ํ‚ค์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด #ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์ด๋‹ค. ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ† ํฐ์€ #JWT (JSON Web Token)์ด๋‹ค. JWT๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” #ํ† ํฐ ์„ ๋ฐœํ–‰ํ•˜์—ฌ ์ธ์ฆ์— ์‚ฌ์šฉํ•œ๋‹ค.



JWT์˜ ๊ตฌ์กฐ

uploadImage


JWT๋Š” ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • ํ—ค๋” (Header): ํ† ํฐ์˜ ํƒ€์ž…๊ณผ ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค.

  • ํŽ˜์ด๋กœ๋“œ (Payload): ์‚ฌ์šฉ์ž ์ •๋ณด, ๊ถŒํ•œ ๋“ฑ ์‹ค์งˆ์ ์ธ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ๋‹ค. #ํด๋ ˆ์ž„ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

  • ์‹œ๊ทธ๋‹ˆ์ฒ˜ (Signature): ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์„œ๋ฒ„์˜ #๋น„๋ฐ€ํ‚ค ๋กœ ์„œ๋ช…ํ•œ ๊ฐ’์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ† ํฐ์ด ์œ„๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.



JWT ์ธ์ฆ ๊ณผ์ •

uploadImage


  1. ๋กœ๊ทธ์ธ ์š”์ฒญ: ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธํ•œ๋‹ค.

  2. ํ† ํฐ ๋ฐœํ–‰: ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฒ€์ฆํ•œ ํ›„, JWT๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ธ๋‹ค.

  3. ํ† ํฐ ์ €์žฅ: ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ›์€ ํ† ํฐ์„ ์ €์žฅํ•œ๋‹ค. (์˜ˆ: ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์ฟ ํ‚ค)

  4. API ์š”์ฒญ: ์ดํ›„ ํด๋ผ์ด์–ธํŠธ๋Š” API ์š”์ฒญ ์‹œ๋งˆ๋‹ค HTTP ํ—ค๋”์˜ Authorization ํ•„๋“œ์— ํ† ํฐ์„ ๋‹ด์•„ ๋ณด๋‚ธ๋‹ค. (์˜ˆ: Authorization: Bearer <token>)

  5. ํ† ํฐ ๊ฒ€์ฆ: ์„œ๋ฒ„๋Š” ๋ฐ›์€ ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ , ์œ ํšจํ•œ ๊ฒฝ์šฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ํ™•์ธํ•˜์—ฌ ํ† ํฐ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€, ์œ ํšจ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜์ง€ ์•Š์•˜๋Š”์ง€ ๋“ฑ์„ ๊ฒ€์ฆํ•œ๋‹ค.



์žฅ์ 


  • #ํ™•์žฅ์„ฑ ์ด ๋›ฐ์–ด๋‚˜๋‹ค.

  • ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” #๋ถ„์‚ฐ์‹œ์Šคํ…œ ์—์„œ ํŠนํžˆ ์œ ๋ฆฌํ•˜๋‹ค.

  • ์„œ๋ฒ„์— #์„ธ์…˜ ์„ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์–ด #๋ฌด์ƒํƒœ (stateless) ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค. ๋น„๋ฐ€ํ‚ค๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” ํ•œ ํ† ํฐ ์œ„๋ณ€์กฐ๊ฐ€ ์–ด๋ ต๋‹ค.



๋‹จ์ 


  • ํ† ํฐ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ† ํฐ์ด ํƒˆ์ทจ๋  ๊ฒฝ์šฐ, ์œ ํšจ ๊ธฐ๊ฐ„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฌด๋ฐฉ๋น„ ์ƒํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด #๋ฆฌํ”„๋ ˆ์‹œํ† ํฐ (Refresh Token)๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€์ ์ธ ์ „๋žต์ด ํ•„์š”ํ•˜๋‹ค.



์š”์•ฝ ๋ฐ ๊ฒฐ๋ก 


API ํ‚ค๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค. ๋ฐ˜๋ฉด, #JWT ๋Š” ๊ตฌํ˜„์ด ๋‹ค์†Œ ๋ณต์žกํ•˜์ง€๋งŒ, ๋†’์€ ๋ณด์•ˆ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ ํ˜„๋Œ€์ ์ธ ์›น ์„œ๋น„์Šค์— ๋” ์ ํ•ฉํ•˜๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์‹ค์ œ๋กœ #PHP ์—์„œ JWT๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.


API๋ณด์•ˆ ์ธ์ฆ ์ธ๊ฐ€ APIํ‚ค ํ† ํฐ JWT JSONWebToken ํด๋ ˆ์ž„ ๋น„๋ฐ€ํ‚ค ํ™•์žฅ์„ฑ ๋ถ„์‚ฐ์‹œ์Šคํ…œ ์„ธ์…˜ ๋ฌด์ƒํƒœ ๋ฆฌํ”„๋ ˆ์‹œํ† ํฐ PHP





50๋งŒ๊ฐœ IP๋ฅผ ๋ณด์œ ! ์‚ฌ์šฉ์ด๋ ฅ ์—†๋Š” IP์ œ๊ณต ๊ฐ„ํŽธ์‚ฌ์šฉ ๋ฌด๋ฃŒํ…Œ์ŠคํŠธ OK

https://vpn.luzensoft.com