[React] ์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ํ”„๋ก ํŠธ์—”๋“œ Day3

2023. 3. 13. 21:37ใ†WEB Dev/StudyNote

728x90

 

๐Ÿ˜ƒ ์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ํ”„๋ก ํŠธ์—”๋“œ Day3

3์›” ํ”„๋ก ํŠธ์—”๋“œ ์ฑŒ๋ฆฐ์ง€
๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„, ํ•˜๋‚˜๋ถ€ํ„ฐ ์—ด๊นŒ์ง€!


์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋ด…๋‹ˆ๋‹ค.
๋ฐฐํฌ๋œ ์„œ๋ฒ„์™€ ๋กœ์ปฌ ์„œ๋ฒ„ ๋“ฑ์„ ํ˜ธ์ถœํ•ด ๋ณด๋ฉด์„œ ์ธํ”„๋ผ์™€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.
๋ณด์•ˆ์ด๋‚˜ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋“ฑ ํ˜„์—…์—์„œ ์กฐ๊ธˆ ๋” ๋‚˜์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ํ•ด๋ณผ๋งŒํ•œ ๊ณ ๋ฏผ๋“ค์„ ํ•จ๊ป˜ํ•ด ๋ด…๋‹ˆ๋‹ค.

 


 

๐Ÿ“ ๊ฐœ์š”

์ง€๋‚œ ์‹œ๊ฐ„ ๋ฆฌ๋ทฐ 

 

JWT๋Š” Json Web Token ํ† ํฐ์— ๋Œ€ํ•œ ๋ช…์นญ, ํ† ํฐ์„ ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ 

Json์œผ๋กœ ๋ฐ›์•„์„œ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•ด๋†จ๋‹ค๊ฐ€ ํ—ค๋”์— ๋‹ด์•„ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.

cURL์€ ํ„ฐ๋ฏธ๋„์—์„œ ์ปค๋งจ๋“œ๋ผ์ธ์œผ๋กœ url์„ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ Command line url์ด๋ผ๋Š” ๋œป

 

 

3๊ฐ•. ์„ธ์…˜๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ตฌํ˜„๊ณผ JWT์™€์˜ ๋น„๊ต ๋ฐ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ณ

 

- ์„ธ์…˜์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ธฐ

- ์ฟ ํ‚ค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ธฐ

- ์„ธ์…˜ ๋กœ๊ทธ์ธ์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

- ์„ธ์…˜์„ ์ด์šฉํ•ด ๋กœ๊ทธ์ธํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

- ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๋ฅผ ์ œ์–ดํ•˜๊ธฐ

 

 

โž• ์„ธ์…˜์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€

 

JWTํ† ํฐ๋ณด๋‹ค ๋” ์ถ”์ƒ์ ์ธ ๊ฒƒ์ด๋‹ค.

์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

๋กœ๊ทธ์ธ์ด๋ผ๋Š” ๋™์ž‘์€ ์„œ๋ฒ„์—์„œ ์œ ์ €๊ฐ€ ์ธ์ฆ ์ •๋ณด๋ฅผ ์–ป๋Š” ๊ณผ์ •์ด๋‹ค.

๋Œ€ํ™”์˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค. ์ธ์ฆ์ด ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๋งฅ๋ฝ.

์„œ๋น„์Šค๊ฐ€ ํ† ํฐ์œผ๋กœ ์œ ์ €๋ฅผ ํ™•์ธํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ์„ธ์…˜์„ ๋“ฑ๋กํ•ด๋‘๊ณ  ์„œ๋ฒ„๋Š” ์œ ์ €๋ฅผ ์„ธ์…˜์œผ๋กœ ์‹๋ณ„ํ•œ๋‹ค.

 

์„ธ์…˜

์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ดํ›„ ๋กœ๊ทธ์•„์›ƒ ํ˜น์€ ๋กœ๊ทธ์ธ ๋งŒ๋ฃŒ๊นŒ์ง€์˜ ๊ธฐ๊ฐ„

 

์„ธ์…˜ ๋ฐฉ์‹ ๋กœ๊ทธ์ธ

์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ์ด ์œ ํšจํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์„œ๋ฒ„์— ์„ธ์…˜ ์•„์ด๋””๋ฅผ ๊ธฐ๋กํ•ด๋‘๊ณ  ์ธ์ฆ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

 

 

 

โž• ์ฟ ํ‚ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€

 

์ฟ ํ‚ค๋Š” HTTP๋ฅผ ํ†ตํ•ด ์ „์†ก์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ ์กฐ๊ฐ ์ค‘์— ํ•˜๋‚˜.

์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ์•„์„œ ๋“ค๊ณ  ์žˆ๋‹ค๊ฐ€ ๋™์ผ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ๋‹ด์•„์„œ ๋ณด๋‚ด๋Š” ์ •์ฑ…

๋ธŒ๋ผ์šฐ์ € ์ž์ฒด๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ธฐ์–ต์‹œ์ผœ์ค€๋‹ค.

 

'์ด ์‹œ๊ฐ„ ๋™์•ˆ ์ด ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” ์œ ํšจํ•˜๋‹ค'

 

 

1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•œ๋‹ค.

2. ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ํ•  ๋•Œ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ(Set-Cookie: connect.sid=something)ํ•œ๋‹ค.

 

3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

4. ์ดํ›„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ํ•  ๋•Œ ์ฟ ํ‚ค์˜ ์„ธ์…˜id sid๋ฅผ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค.

 

 

์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ์•„์„œ ํ•˜๋Š” ๋‚ด์žฅ ๊ธฐ๋Šฅ์ด๋‹ค.

์„œ๋ฒ„๊ฐ€ response์— ๋‹ฌ์•„์„œ ๋ณด๋‚ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

์ฟ ํ‚ค์— ์ ์šฉ๋˜๋Š” ์˜ต์…˜

 

SameSite: None, Lax, Strict - ๊ฐ™์€ ๋„๋ฉ”์ธ์—์„œ๋งŒ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ์ •์ฑ…

None: ์•„๋ฌด๋ฐ๋‚˜

Lax: ๋Œ€๋ถ€๋ถ„ ์—„๊ฒฉํ•˜๊ฒŒ ๋ณด๊ณ  ์•ˆ์ „ํ•œ ์š”์ฒญ๋งŒ ํ—ˆ์šฉ

Strict: ์—„๊ฒฉํ•˜๊ฒŒ single origin ์ถœ์ฒ˜๋งŒ

httpOnly - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€ํ•˜๋ฉฐ HTTP ์š”์ฒญ์„ ํ†ตํ•ด์„œ๋งŒ ์„ธํŒ…๋˜์–ด์•ผ ํ•œ๋‹ค.

Secure: SameSite None์ด๋ผ๋ฉด https๋กœ๋งŒ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

 

CORS

Cross-Origin Resource Sharing

 

ํ”„๋ก ํŠธ๋Š” ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ

 

 

๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ CORS ๊ฒ€์ฆ ํ•ด์ œ

 

# shell
$ open -na Google\ Chrome http://localhost:5173/
 --args --disable-web-security --user-data-dir=/tmp/chrome_dev"
 
#Mac
$ open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
--args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security

#Windows
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
--disable-web-security --disable-gpu --user-data-dir=~/chromeTemp

 

๋ฐฑ์—”๋“œ์—์„œ ์–ด๋–ค origin์„ ํ—ˆ์šฉํ•  ๊ฒƒ์ธ์ง€ ์ •์˜ํ•˜๊ณ  ์–ด๋–ค ๋ฉ”์†Œ๋“œ์—์„œ ํ—ˆ์šฉํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •ํ•œ๋‹ค.

 

CORS๋ผ๋Š” ๊ฒƒ์€ ์ถœ์ฒ˜๊ฐ€ ๋‹ค๋ฅธ ์ž์›,์š”์ฒญ,ํ†ต์‹  ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•˜๋Š” ์ •์ฑ…์ด๋ฉฐ,

์ฟ ํ‚ค๋Š” ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ด๊ณ  httponly์™€ ๊ฐ™์€ ์กฐ๊ฑด์œผ๋กœ ์ฟ ํ‚ค์˜ ์ •์ฑ…์„ ์ œ์–ดํ•œ๋‹ค.

 

 

โž• ์‹ค์Šตํ•˜๊ธฐ

 

--disable-web-security ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉํ•ด์„œ CORS ํ•ด๊ฒฐํ•˜๊ธฐ

"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:\chrome

 

 

โž• ์„ธ์…˜ ๋กœ๊ทธ์ธ ๋™์ž‘ ์‚ดํŽด๋ณด๊ธฐ

 

 

1. ์œ ์ € ์ง„์ž…

2. ์„ธ์…˜ ์œ ํšจ ์ฒดํฌ

2-1. ์œ ํšจํ•œ ์„ธ์…˜ ์‚ฌ์šฉ

2-2. ์œ ํšจํ•œ ์„ธ์…˜ ์•„๋‹Œ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ์ง„ํ–‰

 

 

๋กœ๊ทธ์•„์›ƒ 

์„ธ์…˜์„ ์ง€์šฐ๊ธฐ

 

๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๊ธฐ

 

 

โž• ์„ธ์…˜ VS JWT

 

์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” ์„ธ์…˜ VS JWT

์„ธ์…˜์€ ํ”„๋ก ํŠธ๊ฐ€ ํ•  ๊ฒŒ ์—†๋‹ค.

 

JWT ์˜ ๋ณด์•ˆ, ์„ฑ๋Šฅ, ๊ตฌ์กฐ์  ์žฅ๋‹จ์ 

- ์„œ๋ฒ„ ๋ฐฑ์—”๋“œ ๋น„์šฉ ๊ฐ์†Œ

- ํ”„๋ก ํŠธ์—”๋“œ ๋ณต์žก๋„ ๋†’์•„์ง

- ๋ณด์•ˆ์ƒ ์„ธ์…˜๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์œ„ํ—˜

 

 

์„ธ์…˜์˜ ๋ณด์•ˆ, ์„ฑ๋Šฅ, ๊ตฌ์กฐ์  ์žฅ๋‹จ์ 

- ์„œ๋ฒ„ ๋ฐฑ์—”๋“œ ๋น„์šฉ ๋Œ€ํญ ์ฆ๊ฐ€

- ํ”„๋ก ํŠธ์—”๋“œ ์ธ์ฆ ์‰ฌ์›Œ์ง

- ๋ณด์•ˆ ์•ฝ๊ฐ„ ํ–ฅ์ƒ

 

 

 

 

 

 

728x90