ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [React] ์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ ํ”„๋ก ํŠธ์—”๋“œ Day3
    WEB Dev/StudyNote 2023. 3. 13. 21:37
    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

    ๋Œ“๊ธ€

Designed by Tistory.