ÄÁÅÙÃ÷»ó¼¼º¸±â

ÇÁ·±Æ®¿£µå °³¹ßÀ» À§ÇÑ º¸¾È ÀÔ¹® : ±âÃÊ º¸¾È Áö½ÄºÎÅÍ XSS, CSRF µî ÇÁ·±Æ®¿£µå¸¦ ³ë¸®´Â »çÀ̹ö °ø°Ý±îÁö
ÇÁ·±Æ®¿£µå °³¹ßÀ» À§ÇÑ º¸¾È ÀÔ¹® : ±âÃÊ º¸¾È Áö½ÄºÎÅÍ XSS, CSRF µî ÇÁ·±Æ®¿£µå¸¦ ³ë¸®´Â »çÀ̹ö °ø°Ý±îÁö
  • ÀúÀÚÈ÷¶ó³ë ¸¶»ç½Ã Àú/ÀÌÃáÇõ ¿ª
  • ÃâÆÇ»çÁ¦ÀÌÆà
  • ÃâÆÇÀÏ2024-03-15
  • µî·ÏÀÏ2024-07-01
º¸À¯ 2, ´ëÃâ 0, ¿¹¾à 0, ´©Àû´ëÃâ 2, ´©Àû¿¹¾à 0

Ã¥¼Ò°³

Áö±ÝÀÌ¶óµµ ¾Ë¾ÆµÎ¸é ¾µµ¥ ÀÖ´Â Ãë¾à¼º °ü¸® ´ëÃ¥

ÇÁ·±Æ®¿£µå ºÐ¾ßÀÇ ¹ßÀüÀ¸·Î ´Ù¾çÇÑ ±â´É°ú UI¸¦ °³¹ßÇÒ ¼ö ÀÖ°Ô µÆÁö¸¸, ±×¸¸Å­ ÇÁ·±Æ®¿£µå¿Í °ü·ÃµÈ º¸¾È ¹®Á¦µµ ¸¹¾ÆÁ³´Ù. ÀÌ Ã¥Àº º¸¾È °ü·Ã °æÇèÀÌ ÀûÀº ÇÁ·±Æ®¿£µå °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î Çϸç, ÇÁ·±Æ®¿£µå º¸¾È À̽´, Ãë¾à¼ºÀ» °®´Â ±¸Á¶¿Í ´ëÃ¥À» ±×¸²°ú ÄÚµå·Î ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ±¸¼ºÇß´Ù. º¸¾È °ü·Ã °æÇèÀÌ ÀÖ´Â µ¶ÀÚ¶ó¸é ½Ç½ÀÀ» ÅëÇØ Ãë¾à¼º ´ëÃ¥À» º¹½ÀÇÏ°í ÃֽŠº¸¾È Á¤º¸µµ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. º¸¾È »ç°í¸¦ ¹æÁöÇÏ°í Ãë¾à¼ºÀ» ÃÖ¼ÒÈ­ÇÏ´Â µ¥ ÇÊ¿äÇÑ ½Ç¹« Áö½ÄÀ» ºü¸£°Ô ½ÀµæÇغ¸ÀÚ.

ÀúÀÚ¼Ò°³

Node.js Core CollaboratorÀÌÀÚ Cybozu ÁÖ½Äȸ»çÀÇ ÇÁ·±Æ®¿£µå ¿£Áö´Ï¾î. OSS(¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î) È°µ¿°ú JSConf JP µî ´Ù¾çÇÑ Ä¿¹Â´ÏƼ ¿î¿µ¿¡ Âü¿©ÇÏ°í ÀÖ´Ù. À¥°ú ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ ÁÁ¾ÆÇÏ°í, ÀâÁö¿¡ ±ÛÀ» ±â°íÇϰųª °­¿¬À» Çϱ⵵ ÇÑ´Ù.

¸ñÂ÷

¿Å±äÀÌ ¸Ó¸®¸» ix
º£Å¸¸®´õ Èıâ xi
¸Ó¸®¸» xiii
°¨»çÀÇ ¸» xvi

CHAPTER 1 À¥ º¸¾ÈÀÇ °³¿ä 1

1.1 º¸¾È ´ëÃ¥ÀÌ ÇÊ¿äÇÑ ÀÌÀ¯ 1
__1.1.1 Ãë¾à¼ºÀº ¿Ö ¹ß»ýÇÒ±î? 1 
__1.1.2 ºñ±â´É ¿ä°ÇÀÇ Á߿伺 2
1.2 À¥ Ãë¾à¼ºÀÇ Á¾·ù¿Í µ¿Çâ 3
__1.2.1 º¸¾È Áöħ¿¡¼­ È®ÀÎÇϴ Ãë¾à¼ºÀÇ Á¾·ù¿Í µ¿Çâ 4 
__1.2.2 º¸¾È °ü·Ã Á¤º¸ ¼öÁý 6
COLUMN ±â¾÷ÀÌ Ãë¾à¼º¿¡ ´ëóÇϴ ¹æ¹ý 6
¸¶¹«¸® 7

CHAPTER 2 ½Ç½À Áغñ 9

2.1 Áغñ Àü 9
__2.1.1 ½Ç½À Ãßõ È¯°æ 9 
__2.1.2 ½Ç½À¿¡¼­ »ç¿ëÇϴ ¼ÒÇÁÆ®¿þ¾î 9
2.2 Node.js ¼³Á¤Çϱâ 11
__2.2.1 Node.js ¼³Ä¡Çϱâ 11 
__2.2.2 Node.js ¼³Ä¡ È®ÀÎÇϱâ 12
__2.2.3 npm ¼³Ä¡ È®ÀÎÇϱâ 12
2.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 ¼­¹ö¿¡ Á¢¼ÓÇϱâ 18
COLUMN CommonJS¿Í ECMAScript Modules 19
¸¶¹«¸® 19

CHAPTER 3 HTTP 21

3.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 ÄíÅ°¸¦ »ç¿ëÇÑ »óÅ °ü¸® 32
3.2 HTTP ½Ç½ÀÇϱâ 33
__3.2.1 GET°ú POST·Î µ¥ÀÌÅÍ Àü¼ÛÇϱâ 33 
__3.2.2 »óÅ ÄÚµå È®ÀΠ¹× º¯°æÇϱâ 38
__3.2.3 ÀÓÀǷΠHTTP Çì´õ Ãß°¡Çϱâ 42
3.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¿¡ ÀÇÇÑ ¾ÖÇø®ÄÉÀ̼Ǡ°£ Á¢±Ù Á¦ÇÑ 57

4.1 ¾ÖÇø®ÄÉÀ̼Ǡ°£ Á¢±Ù Á¦ÇÑÀÇ Çʿ伺 57
4.2 µ¿ÀÏ Ãâó Á¤Ã¥¿¡ ÀÇÇÑ º¸È£ 59
__4.2.1 Ãâó 60 
__4.2.2 µ¿ÀÏ Ãâó Á¤Ã¥ 60
__4.2.3 µ¿ÀÏ Ãâó¿¡ ÀÇÇØ Á¢±Ù Á¦ÇѵÇÁö ¾Ê´Â »ç·Ê 65
4.3 µ¿ÀÏ Ãâó Á¤Ã¥¿¡ µû¸¥ Á¦ÇÑ ½Ç½À 66
__4.3.1 ±³Â÷ Ãâó¿¡ ¿äû Àü¼Û Á¦ÇÑ È®ÀÎÇϱâ 66
__4.3.2 iframe ³»ºÎ ±³Â÷ Ãâó ÆäÀÌÁö¿¡ Á¢±Ù Á¦ÇÑ È®ÀÎÇϱâ 67
4.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 ¿äû 82
4.5 CORS ½Ç½À 84
__4.5.1 ±³Â÷ ÃâóÀÇ ¿äûÀ» Çã°¡Çϴ ¹æ¹ý 84 
__4.5.2 Á¢±Ù Çã°¡ Ãâ󸦠Á¦ÇÑÇϴ ¹æ¹ý 87
4.6 postMessage¸¦ »ç¿ëÇØ iframeÀ¸·Î µ¥ÀÌÅÍ Àü¼ÛÇϱâ 89
4.7 ÇÁ·Î¼¼½º ºÐ¸®¿¡ µû¸¥ »çÀ̵å Ã¤³Î °ø°Ý ´ëÃ¥ 91
__4.7.1 »çÀ̵å Ã¤³Î °ø°ÝÀ» ¹æ¾îÇϴ Site Isolation 91
__4.7.2 Ãâ󸶴٠ÇÁ·Î¼¼½º¸¦ ºÐ¸®Çϴ ±¸Á¶ 93
__4.7.3 Cross-Origin IsolationÀÌ À¯È¿ÇÑ ÆäÀÌÁö¿¡¼­ SharedArrayBuffer »ç¿ëÇϱâ 95
¸¶¹«¸® 96

CHAPTER 5 XSS 97

5.1 ´Éµ¿Àû °ø°Ý°ú ¼öµ¿Àû °ø°Ý 97
__5.1.1 ´Éµ¿Àû °ø°Ý 97 
__5.1.2 ¼öµ¿Àû °ø°Ý 98
5.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 ´ëÃ¥ 109
5.3 XSS ¹æÁö ½Ç½À 121
__5.3.1 ÀûÀýÇÑ DOM API¸¦ »ç¿ëÇϴ ¹æ¹ý 121
__5.3.2 URL ½ºÅ°¸¶¸¦ http/https·Î ÇÑÁ¤Çϱâ 125
__5.3.3 XSS ¹®Á¦¸¦ ÁÙÀ̴ DOMPurify ¶óÀ̺귯¸® »ç¿ëÇϱâ 127
5.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 Å×½ºÆ® 143
5.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, Å¬¸¯ÀçÅ·, ¿ÀÇ ¸®´ÙÀÌ·ºÆ® 157

6.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 ´ëÃ¥ 165
6.2 CSRF ´ëÃ¥ ½Ç½À 166
__6.2.1 °£´ÜÇÑ È®Àο렷α×ÀΠȭ¸é »ý¼º 166 
__6.2.2 Æû Àü¼Û È­¸é »ý¼ºÇϱâ 170
__6.2.3 Çǽ̠»çÀÌÆ®¿¡¼­ CSRF °ø°ÝÇϱâ 173
__6.2.4 Double Submit ÄíÅ°¸¦ »ç¿ëÇϴ CSRF ´ëÃ¥ 174
6.3 Å¬¸¯ÀçÅ· 178
__6.3.1 Å¬¸¯ÀçÅ·ÀÇ ±¸Á¶ 178 
__6.3.2 Å¬¸¯ÀçÅ· ´ëÃ¥ 181
6.4 Å¬¸¯ÀçÅ· ´ëÃ¥ ½Ç½À 182
__6.4.1 Å¬¸¯ÀçÅ· °ø°Ý ÀçÇöÇϱâ 183 
__6.4.2 X-Frame-Options¿¡ ÀÇÇѠŬ¸¯ÀçÅ· ´ëÃ¥ 186
6.5 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® 187
__6.5.1 ¿ÀÇ ¸®´ÙÀÌ·ºÆ®ÀÇ ±¸Á¶ 187
__6.5.2 URL °Ë»ç¸¦ ÅëÇÑ ¿ÀÇ ¸®´ÙÀÌ·ºÆ® ´ëÃ¥ 189
6.6 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® ´ëÃ¥ ½Ç½À 190
__6.6.1 ¿ÀÇ ¸®´ÙÀÌ·ºÆ® °ø°Ý ÀçÇöÇϱâ 190 
__6.6.2 URL °Ë»ç¿¡ ÀÇÇÑ ´ëÃ¥ 191
¸¶¹«¸® 192

CHAPTER 7 ÀÎÁõ ¡¤ Àΰ¡ 193

7.1 ÀÎÁõ°ú Àΰ¡ÀÇ Â÷ÀÌ 193
__7.1.1 ÀÎÁõ 193 
__7.1.2 ÀÎÁõÀÇ 3¿ä¼Ò 193 
__7.1.3 Àΰ¡ 194
7.2 ÀÎÁõ ±â´ÉÀÇ º¸¾È ¸®½ºÅ© 195
__7.2.1 ÀÎÁõ ¹æ½ÄÀÇ Á¾·ù 195 
__7.2.2 ºñ¹Ð¹øÈ£ ÀÎÁõ¿¡ ´ëÇÑ °ø°Ý 196
__7.2.3 ºñ¹Ð¹øÈ£ ÀÎÁõ °ø°Ý¿¡ ´ëÇÑ ´ëÃ¥ 197
7.3 °èÁ¤ »ý¼º Æû ±¸Çö ½Ç½À 198
__7.3.1 °èÁ¤ »ý¼º ÆäÀÌÁö Áغñ 198 
__7.3.2 ÀԷ ³»¿ë¿¡ µû¸¥ type ¼Ó¼º º¯°æ 201
__7.3.3 ÀԷ ³»¿ë À¯È¿¼º °Ë»ç 204 
COLUMN ºñ¹Ð¹øÈ£ ÆÐÅÏ Á¶ÇÕÀÇ °æ¿ìÀÇ ¼ö 210
__7.3.4 ºñ¹Ð¹øÈ£ ÀԷ º¸Á¶Çϱâ 211
7.4 ·Î±×ÀΠÁ¤º¸ À¯Ãâ¿¡ ÁÖÀÇÇϱâ 217
¸¶¹«¸® 219

CHAPTER 8 ¶óÀ̺귯¸®¸¦ ³ë¸° º¸¾È ¸®½ºÅ© 221

8.1 ¶óÀ̺귯¸®ÀÇ »ç¿ë 221
__8.1.1 ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾îÀÇ »ç¿ë 221 
__8.1.2 ÇÁ·±Æ®¿£µå ¶óÀ̺귯¸® »óȲ 222
8.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¿¡¼­ Ãë¾à¼ºÀ» °®´Â ¹öÀüÀÇ ¶óÀ̺귯¸® °¡Á®¿À±â 226
8.3 ¶óÀ̺귯¸® »ç¿ëÀÇ º¸¾È ´ëÃ¥ 226
__8.3.1 Ãë¾à¼ºÀ» È®ÀÎÇϴ Åø°ú ¼­ºñ½º »ç¿ë 226
__8.3.2 À¯Áöº¸¼ö°¡ ²ÙÁØÈ÷ ÀÌ·ç¾îÁö´Â ¶óÀ̺귯¸® »ç¿ëÇϱâ 230
__8.3.3 ÃֽŠ¹öÀüÀÇ ¶óÀ̺귯¸® »ç¿ëÇϱâ 230
__8.3.4 ÇÏÀ§ ÀÚ¿ø ¹«°á¼ºÀ» ÅëÇÑ º¯Á¶ È®ÀÎÇϱâ 231
__8.3.5 CDN¿¡¼­ ºÒ·¯¿À´Â ¶óÀ̺귯¸®ÀÇ ¹öÀü ÁöÁ¤Çϱâ 232
¸¶¹«¸® 233

APPENDIX A ¾Õ¿¡¼­ ´Ù·çÁö ¾ÊÀº ÁÖÁ¦ 235
A.1 º¸¾È °ü·Ã º¸ÃæÇнÀ 235
__A.1.1 Ã¥¿¡¼­ ´Ù·çÁö ¾ÊÀº ÁÖÁ¦ ÇнÀ 236 
__A.1.2 º¸¾È °ü·Ã Á¤º¸¸¦ ¾ò´Â ÇÊÀÚÀÇ ¹æ¹ý 237
A.2 HTTPS ½Ç½À 240
__A.2.1 HTTPS ¼­¹ö ±¸ÇöÇϱâ 240 
__A.2.2 HSTS¸¦ »ç¿ëÇØ HTTPS·Î Åë½Å °­Á¦Çϱâ 246

APPENDIX B Çѱ¹¾îÆÇ ºÎ·Ï 251
B.1 º¸¾È Ã¼Å©¸®½ºÆ® 251

Âü°í¹®Çå 255
ã¾Æº¸±â 260

ÇÑÁÙ ¼­Æò