๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Daily/Today I Learned

210204_TIL

by joooing 2021. 2. 5.
๋ฐ˜์‘ํ˜•

๐ŸŽ ์˜ค๋Š˜ ํ•œ ์ผ


โœ”๏ธ  CORS, Browser Security Model
๋„คํŠธ์›Œํฌ์™€ ๊ด€๋ จ๋œ ๊ฐœ๋…๋“ค์„ ๋ฐฐ์› ๋Š”๋ฐ, ์ฒ˜์Œ ์ „์†ก๋˜๋Š” ๋„๋ฉ”์ธ๊ณผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์ด ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ CORS์— ์˜ํ•ด ์š”์ฒญ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ๋ฆ„์„ ์‚ดํŽด๋ณด๋ฉด, ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด ์‘๋‹ต์„ ํ•  ๋•Œ ํ—ค๋”์˜ Access-Control-Allow-Origin์˜ ๊ฐ’์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋œ ์ถœ์ฒ˜๋ฅผ ๊ฐ–๊ณ  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ดํ›„์— ์ž๊ธฐ๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ๊ณผ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋น„๊ตํ•ด ์œ ํšจ์„ฑ์„ ํŒ๋‹จํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ CORS๋Š” ์„ธ๊ฐ€์ง€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ด ๋ฐ”๋€๋‹ค.์ฒซ๋ฒˆ์งธ๋Š” Preflight ์š”์ฒญ์ธ๋ฐ, OPTIONS ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณธ๊ฒฉ์ ์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „, ์–ด๋–ค ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ์š”์ฒญ์ด๋‹ค. ๋‘๋ฒˆ์งธ๋Š” ์ผ๋ฐ˜์ ์ธ ์š”์ฒญ์ธ Simple Request, ๋งˆ์ง€๋ง‰์€ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด ์š”์ฒญ์‹œ ์ธ์ฆ์„ ํ•จ๊ป˜ ๋ณด๋‚ด๋Š” Credentialed Request ์ด๋‹ค. ์ถ”๊ฐ€๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋ฅผ ์‹ ๋ขฐํ•ด ๋ฐœ์ƒํ•˜๋Š”, ๋ฉ”์„ธ์ง€์— ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์„ ํฌํ•จํ•ด ๋ณด๋‚ด๋Š” XSS์ด์Šˆ, ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž ์ธ์ฆ์ •๋ณด๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ๋ฏฟ์–ด๋ฒ„๋ฆฌ๋Š” ๋ฐ”๋žŒ์— ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ์ธ CSRF ์ด์Šˆ์— ๋Œ€ํ•ด์„œ๋„ ๋ฐฐ์› ๋‹ค.

โœ”๏ธ ์ฑ„ํŒ…์•ฑ - ํด๋ผ์ด์–ธํŠธ ๋ถ€๋ถ„ ๋งˆ๋ฌด๋ฆฌ ์ง“๊ธฐ
 ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ๊ด€๋ จ ์ฃผ์ œ์˜ ํƒœ๊ทธ๋ฅผ ๋‹ฌ์•„์„œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์›๋ž˜ ์ด๋ถ€๋ถ„์„ inputํƒœ๊ทธ๋กœ ์ž…๋ ฅ๋ฐ›์•„ ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ID๋„ ์ž…๋ ฅํ•ด์•ผํ•˜๋‹ค๋ณด๋‹ˆ ์ฑ„ํŒ…ํ•œ๋ฒˆ ์น˜๋Š”๋ฐ ๋„ˆ๋ฌด ๋ฒˆ๊ฑฐ๋กœ์šด ๊ฒƒ ๊ฐ™์•„ ๊ทธ๋ƒฅ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก option ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค. ๊ฐ ํƒœ๊ทธ๋ณ„๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ํ•„ํ„ฐ๋งํ•ด์„œ ๋ณด๊ฒŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์— ๊ฐ ํƒœ๊ทธ๋งˆ๋‹ค ๋ช‡๊ฐœ์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ์žˆ๋Š” ์ง€ ํ‘œ์‹œํ•˜๋Š” ๋ถ€๋ถ„๋„ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๋‹ค. ๋งˆ์ง„ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•˜๊ณ  ๋ช‡๋ถ„์ „์— ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์‹œ๊ฐ„๋„ ํ‘œ๊ธฐํ•ด์ฃผ์–ด ๋งˆ๋ฌด๋ฆฌ ์ง€์—ˆ๋‹ค.

 

๐ŸŽ ๊ธฐ์–ตํ•  ๊ฒƒ


โœ”๏ธ MIME type
์›น์—์„œ ํŒŒ์ผ์˜ ํ™•์žฅ์ž๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๋“ฑ ๋ฌธ์„œ์˜ ํƒ€์ž… ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์ •ํ•ด๋‘” ๋ฐฉ๋ฒ•
(ex. image/png, application/json...)

โœ”๏ธAJAX, JSON
Javascript ์—†๋˜ ์‹œ์ ˆ → XMLHttpRequest ๋กœ HTML ์กฐ์ž‘(?)
Javascript ํ™œ๋ฐœ ์ดํ›„ → JSON์œผ๋กœ Javascript๋กœ DOM ์กฐ์ž‘ ๊ฐ€๋Šฅ (JSON์€ Javascript ๊ฐ์ฒดํ˜•์‹์ด๋‹ˆ๊นŒ ํ›จ์”ฌ ๋‹ค๋ฃจ๊ธฐ ํŽธํ•ด์ง..+๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋„ ํ‚ค, ๊ฐ’ ๊ฐ–๋Š” ๊ฐ์ฒดํ˜•์‹์€ ๋งค์šฐ ํ”ํ•ด์„œ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๊ณตํ†ต์œผ๋กœ ์“ฐ๊ธฐ ์ข‹์Œ)

โœ”๏ธ RESTFULํ•˜๋‹ค = ๋ˆ„๊ตฌ๋‚˜ ๋”ฑ๋ณด๋ฉด ์•ˆ๋‹ค

โœ”๏ธ ์ถ”๊ฐ€ 
POSTMAN์—์„œ fetch ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ XHR, jQuery ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด๋ณด์•˜๋‹ค. 

ํ„ฐ๋ฏธ๋„์—์„œ ๋ช…๋ น์–ด๋กœ๋„ ๊ฐ€๋Šฅ
(์™ผ) HTTP (์˜ค) XMLHttpRequest
(์™ผ) jQuery (์˜ค) Fetch

๐ŸŽ ๋” ๊ณต๋ถ€ํ•  ๊ฒƒ


โœ”๏ธ CORS
โœ”๏ธ CSRF, XSRF (๋ณด์•ˆ๋ฌธ์ œ)
โœ”๏ธ TCP/IP

 

๋ฐ˜์‘ํ˜•

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

210206_TIL  (2) 2021.02.07
210205_TIL  (0) 2021.02.06
210203_TIL  (0) 2021.02.04
210202_TIL  (0) 2021.02.03
210201_TIL  (0) 2021.02.02

๋Œ“๊ธ€