JavaScript - The Complete Guide 2022

Section 28: Security - Writing Secure Code

olivia_yj 2022. 11. 8. 18:35

The goals

๐Ÿ’ช๐ŸปPotential Security Holes

โœŒ๐ŸปProtecting Your Code

๐Ÿ‘๐ŸปCORS, CSRF, XSS Attacks

๐Ÿ‘Š๐Ÿปnpm Packages

 

 

Quiz

์งˆ๋ฌธ 1:

ํด๋ผ์ด์–ธํŠธ ์ธก(๋ธŒ๋ผ์šฐ์ € ์ธก) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ์ €์žฅํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

  • ์ผ๋ถ€ API ์„ค์ •์—์„œ ์ ‘๊ทผ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” API์šฉ API ํ‚ค์ž…๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์—ด๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž๊ฒฉ ์ฆ๋ช…์ž…๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ ๊ฒฝ๋กœ์˜ URL์ž…๋‹ˆ๋‹ค.

์งˆ๋ฌธ 2:

์ž ์žฌ์ ์ธ XSS ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

  • textContent๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์ฝ˜ํ…์ธ (์˜ˆ: <input> ํ•„๋“œ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒƒ)๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • alert()๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์ฝ˜ํ…์ธ (์˜ˆ: <input> ํ•„๋“œ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒƒ)๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  • innerHTML์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์ฝ˜ํ…์ธ (์˜ˆ: <input> ํ•„๋“œ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒƒ)๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ 3:

๊ณต๊ฒฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์—์„œ (์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•ด) ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

  • ๊ณต๊ฒฉ์ž๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ฝ˜์†”์—์„œ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณต๊ฒฉ์ž๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM์„ ํŽธ์ง‘ํ•˜๊ณ  ์‹คํ–‰๋ <script> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณต๊ฒฉ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค€๋น„ํ•ด์„œ ํŽ˜์ด์ง€ ์ž…๋ ฅ์— ์ž…๋ ฅํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ URL์— ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

Sources

https://www.npmjs.com/package/sanitize-html

 

sanitize-html

Clean up user-submitted HTML, preserving allowlisted elements and allowlisted attributes on a per-element basis. Latest version: 2.7.3, last published: 12 days ago. Start using sanitize-html in your project by running `npm i sanitize-html`. There are 1421

www.npmjs.com