2023. 3. 13. 21:37ใWEB Dev/StudyNote
๐ ์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ํ๋ก ํธ์๋ 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 ์ ๋ณด์, ์ฑ๋ฅ, ๊ตฌ์กฐ์ ์ฅ๋จ์
- ์๋ฒ ๋ฐฑ์๋ ๋น์ฉ ๊ฐ์
- ํ๋ก ํธ์๋ ๋ณต์ก๋ ๋์์ง
- ๋ณด์์ ์ธ์ ๋ณด๋ค ์กฐ๊ธ ๋ ์ํ
์ธ์ ์ ๋ณด์, ์ฑ๋ฅ, ๊ตฌ์กฐ์ ์ฅ๋จ์
- ์๋ฒ ๋ฐฑ์๋ ๋น์ฉ ๋ํญ ์ฆ๊ฐ
- ํ๋ก ํธ์๋ ์ธ์ฆ ์ฌ์์ง
- ๋ณด์ ์ฝ๊ฐ ํฅ์
'WEB Dev > StudyNote' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TypeScript] GraphQL๊ณผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ๋ ์น ์๋น์ค ์คํฐ๋ 08 (0) | 2023.03.26 |
---|---|
[React] ์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ํ๋ก ํธ์๋ Day4 (0) | 2023.03.16 |
[TypeScript] GraphQL๊ณผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ๋ ์น ์๋น์ค ์คํฐ๋ 07 (0) | 2023.03.12 |
[React] ์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ํ๋ก ํธ์๋ Day1 (0) | 2023.03.06 |
[React] Udemy ๊ฐ์ ๋ ธํธ 11-2 (0) | 2023.02.26 |