ÄÜÅÙÃ÷ »ó¼¼º¸±â
ÇÁ·±Æ®¿£µå °³¹ßÀ» À§ÇÑ º¸¾È ÀÔ¹®


ÇÁ·±Æ®¿£µå °³¹ßÀ» À§ÇÑ º¸¾È ÀÔ¹®

ÇÁ·±Æ®¿£µå °³¹ßÀ» À§ÇÑ º¸¾È ÀÔ¹®

<È÷¶ó³ë ¸¶»ç½Ã> Àú/<ÀÌÃáÇõ> ¿ª | Á¦ÀÌÆà

Ãâ°£ÀÏ
2024-03-15
ÆÄÀÏÆ÷¸Ë
ePub
¿ë·®
12 M
Áö¿ø±â±â
PC½º¸¶Æ®ÆùÅÂºí¸´PC
ÇöȲ
½Åû °Ç¼ö : 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