Ã¥¼Ò°³
Áö±ÝÀÌ¶óµµ ¾Ë¾ÆµÎ¸é ¾µµ¥ ÀÖ´Â Ãë¾à¼º °ü¸® ´ëÃ¥ÇÁ·±Æ®¿£µå ºÐ¾ßÀÇ ¹ßÀüÀ¸·Î ´Ù¾çÇÑ ±â´É°ú UI¸¦ °³¹ßÇÒ ¼ö ÀÖ°Ô µÆÁö¸¸, ±×¸¸Å ÇÁ·±Æ®¿£µå¿Í °ü·ÃµÈ º¸¾È ¹®Á¦µµ ¸¹¾ÆÁ³´Ù. ÀÌ Ã¥Àº º¸¾È °ü·Ã °æÇèÀÌ ÀûÀº ÇÁ·±Æ®¿£µå °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î Çϸç, ÇÁ·±Æ®¿£µå º¸¾È À̽´, Ãë¾à¼ºÀ» °®´Â ±¸Á¶¿Í ´ëÃ¥À» ±×¸²°ú ÄÚµå·Î ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇß´Ù. º¸¾È °ü·Ã °æÇèÀÌ ÀÖ´Â µ¶ÀÚ¶ó¸é ½Ç½ÀÀ» ÅëÇØ Ãë¾à¼º ´ëÃ¥À» º¹½ÀÇÏ°í ÃֽŠº¸¾È Á¤º¸µµ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. º¸¾È »ç°í¸¦ ¹æÁöÇÏ°í Ãë¾à¼ºÀ» ÃÖ¼ÒÈÇÏ´Â µ¥ ÇÊ¿äÇÑ ½Ç¹« Áö½ÄÀ» ºü¸£°Ô ½ÀµæÇغ¸ÀÚ.
ÀúÀÚ¼Ò°³
Node.js Core CollaboratorÀÌÀÚ Cybozu ÁÖ½Äȸ»çÀÇ ÇÁ·±Æ®¿£µå ¿£Áö´Ï¾î. OSS(¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î) È°µ¿°ú JSConf JP µî ´Ù¾çÇÑ Ä¿¹Â´ÏƼ ¿î¿µ¿¡ Âü¿©ÇÏ°í ÀÖ´Ù. À¥°ú ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ ÁÁ¾ÆÇÏ°í, ÀâÁö¿¡ ±ÛÀ» ±â°íÇϰųª °¿¬À» Çϱ⵵ ÇÑ´Ù.
¸ñÂ÷
¿Å±äÀÌ ¸Ó¸®¸» ixº£Å¸¸®´õ Èıâ xi¸Ó¸®¸» xiii°¨»çÀÇ ¸» xvi
CHAPTER 1 À¥ º¸¾ÈÀÇ °³¿ä 11.1 º¸¾È ´ëÃ¥ÀÌ ÇÊ¿äÇÑ ÀÌÀ¯ 1__1.1.1 Ãë¾à¼ºÀº ¿Ö ¹ß»ýÇÒ±î? 1 __1.1.2 ºñ±â´É ¿ä°ÇÀÇ Á߿伺 21.2 À¥ Ãë¾à¼ºÀÇ Á¾·ù¿Í µ¿Çâ 3__1.2.1 º¸¾È Áöħ¿¡¼ È®ÀÎÇÏ´Â Ãë¾à¼ºÀÇ Á¾·ù¿Í µ¿Çâ 4 __1.2.2 º¸¾È °ü·Ã Á¤º¸ ¼öÁý 6COLUMN ±â¾÷ÀÌ Ãë¾à¼º¿¡ ´ëóÇÏ´Â ¹æ¹ý 6¸¶¹«¸® 7
CHAPTER 2 ½Ç½À Áغñ 92.1 Áغñ Àü 9__2.1.1 ½Ç½À Ãßõ ȯ°æ 9 __2.1.2 ½Ç½À¿¡¼ »ç¿ëÇÏ´Â ¼ÒÇÁÆ®¿þ¾î 92.2 Node.js ¼³Á¤Çϱâ 11__2.2.1 Node.js ¼³Ä¡Çϱâ 11 __2.2.2 Node.js ¼³Ä¡ È®ÀÎÇϱâ 12__2.2.3 npm ¼³Ä¡ È®ÀÎÇϱâ 122.3 Node.js + Express¸¦ »ç¿ëÇÑ HTTP ¼¹ö ±¸ÃàÇϱâ 13__2.3.1 ½Ç½À Áغñ¿Í Express ¼³Ä¡Çϱâ 13__2.3.2 Node.js + Express·Î HTTP ¼¹ö ±¸ÃàÇϱâ 14 __2.3.3 Á¤Àû ÆÄÀÏ Àü´ÞÇϱâ 17__2.3.4 È£½ºÆ®¸íÀ» ÀÓÀÇ·Î ¼³Á¤ÇØ ·ÎÄà HTTP ¼¹ö¿¡ Á¢¼ÓÇϱâ 18COLUMN CommonJS¿Í ECMAScript Modules 19¸¶¹«¸® 19
CHAPTER 3 HTTP 213.1 HTTP ±âÃÊ 21__3.1.1 URL 22 __3.1.2 DNS 23 __3.1.3 TCP/IP 24 __3.1.4 HTTP ¸Þ½ÃÁö 26__3.1.5 HTTP ¸Þ¼µå 28 __3.1.6 »óÅ ÄÚµå 29 __3.1.7 HTTP Çì´õ 30__3.1.8 ÄíÅ°¸¦ »ç¿ëÇÑ »óÅ °ü¸® 323.2 HTTP ½Ç½ÀÇϱâ 33__3.2.1 GET°ú POST·Î µ¥ÀÌÅÍ Àü¼ÛÇϱâ 33 __3.2.2 »óÅ ÄÚµå È®ÀÎ ¹× º¯°æÇϱâ 38__3.2.3 ÀÓÀÇ·Î HTTP Çì´õ Ãß°¡Çϱâ 423.3 ¾ÈÀüÇÑ Åë½ÅÀ» À§ÇÑ HTTPS 45__3.3.1 HTTPÀÇ ¾àÁ¡ 45 __3.3.2 HTTP ¾àÁ¡À» ÇØ°áÇÏ´Â TLS 47__3.3.3 HTTPS µµÀÔ ±ÇÀå 49 __3.3.4 ¾ÈÀüÇÑ ÄÜÅؽºÆ®¸¸ ÀÌ¿ë °¡´ÉÇÑ API 50__3.3.5 Mixed ContentÀÇ À§Ç輺 51 __3.3.6 HSTS¸¦ »ç¿ëÇØ HTTPS Åë½Å °Á¦Çϱâ 53¸¶¹«¸® 56
CHAPTER 4 Origin¿¡ ÀÇÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç °£ Á¢±Ù Á¦ÇÑ 574.1 ¾ÖÇø®ÄÉÀÌ¼Ç °£ Á¢±Ù Á¦ÇÑÀÇ Çʿ伺 574.2 µ¿ÀÏ Ãâó Á¤Ã¥¿¡ ÀÇÇÑ º¸È£ 59__4.2.1 Ãâó 60 __4.2.2 µ¿ÀÏ Ãâó Á¤Ã¥ 60__4.2.3 µ¿ÀÏ Ãâó¿¡ ÀÇÇØ Á¢±Ù Á¦ÇѵÇÁö ¾Ê´Â »ç·Ê 654.3 µ¿ÀÏ Ãâó Á¤Ã¥¿¡ µû¸¥ Á¦ÇÑ ½Ç½À 66__4.3.1 ±³Â÷ Ãâó¿¡ ¿äû Àü¼Û Á¦ÇÑ È®ÀÎÇϱâ 66__4.3.2 iframe ³»ºÎ ±³Â÷ Ãâó ÆäÀÌÁö¿¡ Á¢±Ù Á¦ÇÑ È®ÀÎÇϱâ 674.4 CORS 71__4.4.1 CORS ¹æ½Ä 72 __4.4.2 ´Ü¼ø ¿äû 73 __4.4.3 Preflight Request 74__4.4.4 ÄíÅ°¸¦ Æ÷ÇÔÇÏ´Â ¿äû Àü¼Û 80 __4.4.5 CORS ¿äû ¸ðµå 81__4.4.6 crossorigin ¼Ó¼ºÀ» »ç¿ëÇÏ´Â CORS ¿äû 824.5 CORS ½Ç½À 84__4.5.1 ±³Â÷ ÃâóÀÇ ¿äûÀ» Çã°¡ÇÏ´Â ¹æ¹ý 84 __4.5.2 Á¢±Ù Çã°¡ Ãâó¸¦ Á¦ÇÑÇÏ´Â ¹æ¹ý 874.6 postMessage¸¦ »ç¿ëÇØ iframeÀ¸·Î µ¥ÀÌÅÍ Àü¼ÛÇϱâ 894.7 ÇÁ·Î¼¼½º ºÐ¸®¿¡ µû¸¥ »çÀ̵å ä³Î °ø°Ý ´ëÃ¥ 91__4.7.1 »çÀ̵å ä³Î °ø°ÝÀ» ¹æ¾îÇÏ´Â Site Isolation 91__4.7.2 Ãâ󸶴٠ÇÁ·Î¼¼½º¸¦ ºÐ¸®ÇÏ´Â ±¸Á¶ 93__4.7.3 Cross-Origin IsolationÀÌ À¯È¿ÇÑ ÆäÀÌÁö¿¡¼ SharedArrayBuffer »ç¿ëÇϱâ 95¸¶¹«¸® 96
CHAPTER 5 XSS 975.1 ´Éµ¿Àû °ø°Ý°ú ¼öµ¿Àû °ø°Ý 97__5.1.1 ´Éµ¿Àû °ø°Ý 97 __5.1.2 ¼öµ¿Àû °ø°Ý 985.2 XSS 99__5.2.1 XSS ±¸Á¶ 100 __5.2.2 XSS À§Çù 101 __5.2.3 ¼¼ °¡Áö XSS 102__5.2.4 DOM ±â¹Ý XSS 104 __5.2.5 XSS ´ëÃ¥ 1095.3 XSS ¹æÁö ½Ç½À 121__5.3.1 ÀûÀýÇÑ DOM API¸¦ »ç¿ëÇÏ´Â ¹æ¹ý 121__5.3.2 URL ½ºÅ°¸¶¸¦ http/https·Î ÇÑÁ¤Çϱâ 125__5.3.3 XSS ¹®Á¦¸¦ ÁÙÀÌ´Â DOMPurify ¶óÀ̺귯¸® »ç¿ëÇϱâ 1275.4 Content Security Policy¸¦ »ç¿ëÇÑ XSS ´ëóÇϱâ 129__5.4.1 CSP °³¿ä 129 __5.4.2 Strict CSP 134__5.4.3 ¹®ÀÚ¿À» ¾ÈÀüÇÑ Å¸ÀÔÀ¸·Î »ç¿ëÇÏ´Â Trusted Types 138__5.4.4 Report-Only ¸ðµå¸¦ »ç¿ëÇÑ policy Å×½ºÆ® 1435.5 CSP ¼³Á¤ ½Ç½ÀÇϱâ 146__5.5.1 nonce-source¸¦ »ç¿ëÇÑ CSP ¼³Á¤Çϱâ 146__5.5.2 strict-dynamicÀ» »ç¿ëÇØ µ¿ÀûÀ¸·Î ¡´script¡µ ¿ä¼Ò »ý¼ºÇϱâ 150__5.5.3 Trusted Types ¼³Á¤ ¹æ¹ý 153¸¶¹«¸® 155
CHAPTER 6 ±âŸ ¼öµ¿ÀûÀÎ °ø°Ý: CSRF, Ŭ¸¯ÀçÅ·, ¿ÀÇ ¸®´ÙÀÌ·ºÆ® 1576.1 CSRF 157__6.1.1 CSRFÀÇ ±¸Á¶ 157 __6.1.2 ÅäÅ«À» »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 159__6.1.3 Double Submit ÄíÅ°¸¦ »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 161__6.1.4 SameSite ÄíÅ°¸¦ »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 163__6.1.5 Origin Çì´õ¸¦ »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 164 __6.1.6 CORS¸¦ »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 1656.2 CSRF ´ëÃ¥ ½Ç½À 166__6.2.1 °£´ÜÇÑ È®ÀÎ¿ë ·Î±×ÀÎ È¸é »ý¼º 166 __6.2.2 Æû Àü¼Û È¸é »ý¼ºÇϱâ 170__6.2.3 ÇÇ½Ì »çÀÌÆ®¿¡¼ CSRF °ø°ÝÇϱâ 173__6.2.4 Double Submit ÄíÅ°¸¦ »ç¿ëÇÏ´Â CSRF ´ëÃ¥ 1746.3 Ŭ¸¯ÀçÅ· 178__6.3.1 Ŭ¸¯ÀçÅ·ÀÇ ±¸Á¶ 178 __6.3.2 Ŭ¸¯ÀçÅ· ´ëÃ¥ 1816.4 Ŭ¸¯ÀçÅ· ´ëÃ¥ ½Ç½À 182__6.4.1 Ŭ¸¯ÀçÅ· °ø°Ý ÀçÇöÇϱâ 183 __6.4.2 X-Frame-Options¿¡ ÀÇÇÑ Å¬¸¯ÀçÅ· ´ëÃ¥ 1866.5 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® 187__6.5.1 ¿ÀÇ ¸®´ÙÀÌ·ºÆ®ÀÇ ±¸Á¶ 187__6.5.2 URL °Ë»ç¸¦ ÅëÇÑ ¿ÀÇ ¸®´ÙÀÌ·ºÆ® ´ëÃ¥ 1896.6 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® ´ëÃ¥ ½Ç½À 190__6.6.1 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® °ø°Ý ÀçÇöÇϱâ 190 __6.6.2 URL °Ë»ç¿¡ ÀÇÇÑ ´ëÃ¥ 191¸¶¹«¸® 192
CHAPTER 7 ÀÎÁõ ¡¤ Àΰ¡ 1937.1 ÀÎÁõ°ú Àΰ¡ÀÇ Â÷ÀÌ 193__7.1.1 ÀÎÁõ 193 __7.1.2 ÀÎÁõÀÇ 3¿ä¼Ò 193 __7.1.3 Àΰ¡ 1947.2 ÀÎÁõ ±â´ÉÀÇ º¸¾È ¸®½ºÅ© 195__7.2.1 ÀÎÁõ ¹æ½ÄÀÇ Á¾·ù 195 __7.2.2 ºñ¹Ð¹øÈ£ ÀÎÁõ¿¡ ´ëÇÑ °ø°Ý 196__7.2.3 ºñ¹Ð¹øÈ£ ÀÎÁõ °ø°Ý¿¡ ´ëÇÑ ´ëÃ¥ 1977.3 °èÁ¤ »ý¼º Æû ±¸Çö ½Ç½À 198__7.3.1 °èÁ¤ »ý¼º ÆäÀÌÁö Áغñ 198 __7.3.2 ÀÔ·Â ³»¿ë¿¡ µû¸¥ type ¼Ó¼º º¯°æ 201__7.3.3 ÀÔ·Â ³»¿ë À¯È¿¼º °Ë»ç 204 COLUMN ºñ¹Ð¹øÈ£ ÆÐÅÏ Á¶ÇÕÀÇ °æ¿ìÀÇ ¼ö 210__7.3.4 ºñ¹Ð¹øÈ£ ÀÔ·Â º¸Á¶Çϱâ 2117.4 ·Î±×ÀÎ Á¤º¸ À¯Ãâ¿¡ ÁÖÀÇÇϱâ 217¸¶¹«¸® 219
CHAPTER 8 ¶óÀ̺귯¸®¸¦ ³ë¸° º¸¾È ¸®½ºÅ© 2218.1 ¶óÀ̺귯¸®ÀÇ »ç¿ë 221__8.1.1 ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾îÀÇ »ç¿ë 221 __8.1.2 ÇÁ·±Æ®¿£µå ¶óÀ̺귯¸® »óȲ 2228.2 ¶óÀ̺귯¸®¿¡ ¼û¾î ÀÖ´Â º¸¾È ¸®½ºÅ© 223__8.2.1 ¼µåÆÄƼ ¶óÀ̺귯¸®¸¦ °æÀ¯ÇÏ´Â °ø°Ý 223__8.2.2 ¸®ºä°¡ ÃæºÐÇÏÁö ¾ÊÀº Äڵ忡 ÀÇÇÑ Ãë¾à¼º 223__8.2.3 °èÁ¤ Å»Ãë¿¡ ÀÇÇÑ Ãë¾à¼º 224 __8.2.4 ÀÇÁ¸ °ü°è »ó¼Ó¿¡ ÀÇÇÑ Ãë¾à¼º 224__8.2.5 CDN¿¡¼ ÄÜÅÙÃ÷ º¯Á¶ 225__8.2.6 CDN¿¡¼ Ãë¾à¼ºÀ» °®´Â ¹öÀüÀÇ ¶óÀ̺귯¸® °¡Á®¿À±â 2268.3 ¶óÀ̺귯¸® »ç¿ëÀÇ º¸¾È ´ëÃ¥ 226__8.3.1 Ãë¾à¼ºÀ» È®ÀÎÇÏ´Â Åø°ú ¼ºñ½º »ç¿ë 226__8.3.2 À¯Áöº¸¼ö°¡ ²ÙÁØÈ÷ ÀÌ·ç¾îÁö´Â ¶óÀ̺귯¸® »ç¿ëÇϱâ 230__8.3.3 ÃֽŠ¹öÀüÀÇ ¶óÀ̺귯¸® »ç¿ëÇϱâ 230__8.3.4 ÇÏÀ§ ÀÚ¿ø ¹«°á¼ºÀ» ÅëÇÑ º¯Á¶ È®ÀÎÇϱâ 231__8.3.5 CDN¿¡¼ ºÒ·¯¿À´Â ¶óÀ̺귯¸®ÀÇ ¹öÀü ÁöÁ¤Çϱâ 232¸¶¹«¸® 233APPENDIX A ¾Õ¿¡¼ ´Ù·çÁö ¾ÊÀº ÁÖÁ¦ 235A.1 º¸¾È °ü·Ã º¸ÃæÇнÀ 235__A.1.1 Ã¥¿¡¼ ´Ù·çÁö ¾ÊÀº ÁÖÁ¦ ÇнÀ 236 __A.1.2 º¸¾È °ü·Ã Á¤º¸¸¦ ¾ò´Â ÇÊÀÚÀÇ ¹æ¹ý 237A.2 HTTPS ½Ç½À 240__A.2.1 HTTPS ¼¹ö ±¸ÇöÇϱâ 240 __A.2.2 HSTS¸¦ »ç¿ëÇØ HTTPS·Î Åë½Å °Á¦Çϱâ 246APPENDIX B Çѱ¹¾îÆÇ ºÎ·Ï 251B.1 º¸¾È üũ¸®½ºÆ® 251Âü°í¹®Çå 255ã¾Æº¸±â 260
ÇÑÁÙ ¼Æò