waffle 2021. 9. 20. 22:04
728x90

๋ฐฐ๊ฒฝ์ง€์‹

 

* HTTP: HyperText Transfer Protocol์˜ ์•ฝ์ž๋กœ, ์ธํ„ฐ๋„ท์—์„œ ์ •๋ณด๋ฅผ ์†ก์ˆ˜์‹ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ (๊ทœ์•ฝ)์ž…๋‹ˆ๋‹ค. HTML๋ฌธ์„œ ์†ก์ˆ˜์‹ ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

* REST API: Repersentational State Trasfer API์˜ ์•ฝ์ž๋กœ, REST๋ผ๋Š” ๊ทœ์น™์— ๋งž์ถฐ ๊ฐœ๋ฐœ ๋ฐ ์ œ๊ณต๋˜๋Š” API๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

* API: Application Programming Interface์˜ ์•ฝ์ž๋กœ, ํŠน์ • ์„œ๋น„์Šค๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž์‹ ๋“ค์˜ ์„œ๋น„์Šค ๋‚ด๋ถ€์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด๋†“์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

* XSS (Cross Site Scripting): ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ด€๋ฆฌ์ž๊ฐ€ ์•„๋‹Œ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. HTML input ํƒœ๊ทธ๋‚˜ ๋ฉ”์ผ ๋‚ด์šฉ ๋“ฑ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ๊ทธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

 


 

์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…

 

์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…์ด๋ž€ ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…์„ ๋ง‰๊ธฐ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ณด์•ˆ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

CORS์™€ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œํ•œ๋‹ค๋Š” ์ ์—์„œ ๊ณตํ†ต์ ์ด ์žˆ์ง€๋งŒ, ๋ณด๋‹ค ํญ๋„“๊ฒŒ ๋‹ค์–‘ํ•œ ์„ค์ •๋“ค์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋˜ํ•œ CORS๋Š” ๊ธฐ๋ด„์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด์žˆ๊ณ , ์„ค์ •์„ ํ†ตํ•ด ํ•ด์ œํ•ด์•ผํ•˜๋Š”๊ฒƒ์— ๋น„ํ•ด, CSP๋Š” ๋ณ„๋„ ์„ค์ •์ด ์—†๋‹ค๋ฉด ํ•ด์ œ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

CSP ์„ค์ •

1) ์›น๋ฌธ์„œ์— meta ํƒœ๊ทธ๋กœ ์„ค์ •

html head์— ์•„๋ž˜ ๋ฉ”ํƒ€ํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด CSP๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค:

<meta http-equiv="Content-Security-Policy" content="{์กฐ๊ฑด๋“ค}">

 

2) html ๋ฌธ์„œ ์‘๋‹ต์‹œ Content-Security-Policy ํ—ค๋” ์ถ”๊ฐ€

์‘๋‹ต header์— ์•„๋ž˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

Content-Security-Policy: {์กฐ๊ฑด๋“ค}

 

CSP Directives

์œ„์— {์กฐ๊ฑด๋“ค} ํ˜•์‹์œผ๋กœ ์จ๋†“์€ ๋ถ€๋ถ„์„ Directive๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Directive๋Š” ํŠน์ • ํ˜•์‹์— ๋Œ€ํ•œ ํ—ˆ์šฉ url์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํŠน์ • ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋งํ•ฉ๋‹ˆ๋‹ค:

 

style-src:  css์™€ ๊ด€๋ จ๋œ ๊ฐ’script-src: js์™€ ๊ด€๋ จ๋œ ๊ฐ’img-src: ์ด๋ฏธ์ง€๋‚˜ favicon๊ณผ ๊ด€๋ จ๋œ ๊ฐ’default-src: directive ๊ธฐ๋ณธ๊ฐ’

 

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

 

Content-Security-Policy - HTTP | MDN

The HTTP Content-Security-Policy response header allows web site administrators to control resources the user agent is allowed to load for a given page. With a few exceptions, policies mostly involve specifying server origins and script endpoints. This hel

developer.mozilla.org

 

๊ฐ ํ˜•์‹์— ๋Œ€ํ—ค ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’ ์„ค์ •์€ ์ด 11๊ฐœ ์ž…๋‹ˆ๋‹ค. 

ํ˜•์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/default-src

 

CSP: default-src - HTTP | MDN

The HTTP Content-Security-Policy (CSP) default-src directive serves as a fallback for the other CSP fetch directives. For each of the following directives that are absent, the user agent looks for the default-src directive and uses this value for it:

developer.mozilla.org

 

728x90
๋ฐ˜์‘ํ˜•