ð°ããã«ãŒã«ãã©ãŠã¶ãžã®åœä»€æš©ã¯æž¡ããªãðXSSã察話ã§çè§£ããð¯ãã«ãšææã®ãµã€ããŒã»ãã¥ãªãã€ð¥ïžç¬¬1å
å ¥åæ¬ããããã°ã©ã ãäŸµå ¥ãã
ãã«ãææãXSSãšã¯äœã§ãããããååã ãã§ã¯ãäœãããæ»æãªã®ãæ³åã§ããŸããã
ææãç°¡åã«ããã°ãWebãµã€ãã®å
¥åæ¬ãªã©ã«æªæã®ããã¹ã¯ãªãããçŽã蟌ãŸãããããèŠã人ã®ãã©ãŠã¶ã§å®è¡ãããæ»æã ãã
ãã«ãå
¥åæ¬ã¯ãååãæç« ãå
¥åããå Žæã§ããããããã«ããã°ã©ã ãå
¥ããããã®ã§ããã
ææãå
¥åæ¬ã¯ã人éããèŠãã°æç« ãæžãå Žæã ãããããã³ã³ãã¥ãŒã¿ãŒããèŠãã°ãæåãåãåãå Žæã«ãããªãããå±±ç°å€ªéãããããã«ã¡ã¯ããããã©ãŠã¶ãžã®åœä»€ããæåã¯ãã¹ãŠæååãšããŠå
¥ã£ãŠããã
ãã«ãå
¥å£ã§ã¯åºå¥ãããŠããªãã®ã§ããã
ææãããã ãåãåã£ãæååãWebãµã€ãããã®ãŸãŸç»é¢ã«è¡šç€ºãããšããã©ãŠã¶ãæç« ã§ã¯ãªãããã°ã©ã ãšããŠè§£éããããšãããããããXSSã®å
¥å£ã«ãªãã
ãã«ãåä»ã§èº«åèšŒææžã確èªãããå
šå¡ãäºå宀ãŸã§éããŠããŸããããªãã®ã§ããã
ææãããããäºå宀ã«å
¥ã£ãŠãããç§ã¯èšåæ
åœè
ã§ãããšèšããããšããã©ãŠã¶ã¯çŽ çŽã«éµãŸã§æž¡ããŠããŸãã
å®éã®ã¹ã¯ãªãããèŠãŠã¿ã
ãã«ãå
·äœçã«ã¯ãã©ã®ãããªã¹ã¯ãªããã䜿ãããã®ã§ããããã
ææãXSSã®åŠç¿ã§ã¯ãå±éºãªåŠçã§ã¯ãªããèŠåç»é¢ã衚瀺ããã ãã®ç°¡åãªã¹ã¯ãªããããã䜿ããããããšãã°ã次ã®ãããªãã®ã ã
<script>
alert('XSSãå®è¡ãããŸãã');
</script>
ãã«ããããå
¥åãããšãã©ããªãã®ã§ããã
ææãWebãµã€ããå®å
šãªåŠçãããããã®ãŸãŸHTMLãžåã蟌ããšããã©ãŠã¶ã«ãXSSãå®è¡ãããŸããããšããèŠåç»é¢ã衚瀺ãããã
ãã«ãèŠåã衚瀺ããã ããªããããã»ã©æããããŸãããã
ææããã®äŸã¯ãã¹ã¯ãªãããæ¬åœã«å®è¡ãããããšã確èªããããã®å®å
šãªå®éšã ãèŠåç»é¢ãåºãããšããããšã¯ãå¥ã®JavaScriptãå®è¡ã§ããå¯èœæ§ãããã
ãã«ãçé¢ã®éµãéããã©ããã確èªããããã«ããã¢ãå°ãæŒããŠã¿ãç¶æ
ã§ããã
ææãããã ãèŠåç»é¢ãã®ãã®ã被害ãªã®ã§ã¯ãªããå€éšããå
¥åãããåœä»€ãããã©ãŠã¶ãå®è¡ã§ããŠããŸã£ãããšãåé¡ãªãã ã
ãã©ãŠã¶ã¯ãªãå®è¡ããã®ã
ãã«ããã©ãŠã¶ã¯ããªãæªããã¹ã¯ãªããã ãšå€æããªãã®ã§ããããã
ææããã©ãŠã¶ã¯ã誰ããã®ã¹ã¯ãªãããæžããã®ããç¥ããªãããã ãæ£èŠã®éçºè
ãæžãããã®ãªã®ããæ»æè
ãå
¥åæ¬ã«å
¥ãããã®ãªã®ãã宿ããHTMLãèŠãã ãã§ã¯åºå¥ã§ããªãã
ãã«ãåœä»€ã®åœ¢ã«ãªã£ãŠããã°å®è¡ããã®ã§ããã
ææãããã ããã©ãŠã¶ã¯åœä»€ã«å¿ å®ã ããããã¯å°ãæªããããã仿¥ã¯å®è¡ããªãã§ãããããšã¯èããŠãããªãã
ãã«ãä»äºã¯éãããã©ã空æ°ãèªãŸãªãè·å¡ã§ããã
ææã空æ°ã¯èªãŸãªãããHTMLã¯é©ãã»ã©æ£ç¢ºã«èªãã
ãåãåãããã©ãŒã ã§èµ·ããXSS
ãã«ãå®éã®Webãµã€ãã§ã¯ãã©ãã§èµ·ãããããã®ã§ããããã
ææãããšãã°ãäŒèšäºåæã®ãåãåãããã©ãŒã ãèããŠã¿ãããæ®éã®å©çšè
ã¯ãçžè«å
容ã«ãäŒç€Ÿãèšç«ããã®ã§ãçšåé¡§åã«ã€ããŠçžè«ãããã§ãããšå
¥åããã
ãã«ãéåžžã®ãåãåããã§ããã
ææããšããããæ»æè
ãçžè«æç« ã®ä»£ããã«ãå
ã»ã©ã®ãããªã¹ã¯ãªãããå
¥åããããã®å
容ãããŒã¿ããŒã¹ãžä¿åããããšãããã
ãã«ãä¿åããç¬éã«å®è¡ãããã®ã§ããã
ææãä¿åããã ãã§ã¯ãéåžžã¯å®è¡ãããªããåé¡ã¯ãäºåæã®è·å¡ã管çç»é¢ãéãããšãã ã
ãã«ã管çç»é¢ã«ãåãåããå
容ã衚瀺ãããŸããã
ææããã®è¡šç€ºåŠçãå®å
šã§ãªããã°ãä¿åãããŠããã¹ã¯ãªãããè·å¡ã®ãã©ãŠã¶ã§å®è¡ãããã
ãã«ãè·å¡ã¯ããåãåãããèªãããšããã ãã§ãããã
ææãããã ãã¡ãŒã«ãéå°ããã€ããããæçŽã®äžããå°ããªäœæ¥å¡ãåºãŠããŠãåæã«äºåæã®äžãæ©ãå§ãããããªãã®ã ã
ãã«ããåãåãããã©ãŒã ãã管çç»é¢ãžã®è£å£ã«ãªãã®ã§ããã
ææããã®ããã«ãæªæã®ããå
容ãäžåºŠä¿åããããšããå¥ã®å©çšè
ã®ãã©ãŠã¶ã§å®è¡ããããã®ããä¿ååXSSãšããã
管çç»é¢ã ããå®å šãšã¯éããªã
ãã«ã管çç»é¢ã¯è·å¡ããèŠãªãã®ã§ãäžè¬å
¬éããŒãžããå®å
šãªã®ã§ã¯ãããŸãããã
ææããããã管çç»é¢ã¯æ³šæãå¿
èŠã ãå€éšããå±ãããåãåããã顧客åãåèãã³ã¡ã³ããªã©ããåŒ·ãæš©éãæã€è·å¡ãé²èЧããããã ã
ãã«ãæ»æè
æ¬äººã®ãã©ãŠã¶ã§ã¯ãªãã管çè
ã®ãã©ãŠã¶ã§å®è¡ãããã®ã§ããã
ææããã®ãšããã管çè
ã®ãã©ãŠã¶ãªããäžè¬å©çšè
ã«ã¯ã§ããªãæäœãå¯èœãªå Žåãããã
ãã«ãé庫çªã«æªããè·ç©ãéå°ããããããªãã®ã§ããã
ææããè·å¡ããèŠãªããã倧äžå€«ãã§ã¯ãªããè·å¡ãèŠããããããå®å
šã«è¡šç€ºããªããã°ãªããªããšèããã¹ãã ã
æ€çŽ¢ç»é¢ã«ãæœãã§ãã
ãã«ãããŒã¿ããŒã¹ã«ä¿åããªããã°ãXSSã¯èµ·ãããªãã®ã§ããããã
ææãä¿åããªããŠãèµ·ããããšããããããšãã°ãWebãµã€ãã§ãçžç¶çšããšæ€çŽ¢ãããšããçžç¶çšã®æ€çŽ¢çµæããšè¡šç€ºãããããŒãžãããã ããã
ãã«ãããèŠãããŸãã
ææãæ€çŽ¢èªãURLããåãåãããã®ãŸãŸç»é¢ãžè¡šç€ºããŠããå Žåã现工ãããæ€çŽ¢èªãå«ããªã³ã¯ãäœãããããšããããå©çšè
ããã®ãªã³ã¯ãã¯ãªãã¯ãããšãæ€çŽ¢çµæã®ç»é¢ã§ã¹ã¯ãªãããå®è¡ãããå¯èœæ§ãããã
ãã«ãæ€çŽ¢èªãç»é¢ã«è¿ããã ããªã®ã«ãæ»æã«ãªãã®ã§ããã
ææãããã ããã®ããã«ãéãããŠããå
容ãããç»é¢ãžè¿ãããšã§çºçãããã®ããåå°åXSSãšããã
ãã«ãä¿ååã¯äºåæã«çœ®ãããæéè£
眮ãåå°åã¯æãè¿ããããŒã«ã®äžã«ä»æããå
¥ã£ãŠãããããªãã®ã§ããã
ææãå°ã
ç©éšã ããéãã¯ãã衚ããŠããã
XSSã«ãã£ãŠäœããããã®ã
ãã«ãXSSãæç«ãããšãèŠåç»é¢ä»¥å€ã«ã¯äœããããå¯èœæ§ããããŸããã
ææãæ¬ç©ã«äŒŒãåœã®ãã°ã€ã³ç»é¢ã衚瀺ãããããããŒãžã®å
å®¹ãæžãæããããããå¥ã®å±éºãªãµã€ããžç§»åããããããããå¯èœæ§ãããã
ãã«ãæ£èŠã®Webãµã€ããéããŠããã®ã«ãåœç»é¢ãåºãã®ã§ããã
ææããããXSSã®æããšããã ãå©çšè
ã¯æ£èŠãµã€ãã®URLãèŠãŠããããã衚瀺ãããç»é¢ãæ¬ç©ã ãšæããããã
ãã«ãæ£èŠã®å»ºç©ã®åä»ã«ãåœã®è·å¡ã座ã£ãŠããç¶æ
ã§ããã
ææãããã«ããã©ãŠã¶ããèªã¿åããæ
å ±ãçãŸãããããã°ã€ã³äžã®å©çšè
ã«ä»£ãã£ãŠæäœããããããå±éºãããã
ãã«ãåãªã衚瀺ã®ããããã§ã¯ãªãã®ã§ããã
ææãããã ãä¿¡é ŒãããŠããWebãµã€ãã®äžã§ãæ»æè
ã®åœä»€ãå®è¡ãããããšãåé¡ãªãã ã
PHPã®åºæ¬å¯Ÿç
ãã«ãPHPã§ã¯ãã©ã®ããã«é²ãã®ã§ããããã
ææãæ®éã®æç« ãšããŠHTMLã«è¡šç€ºããå Žåã¯ãhtmlspecialchars()ãšãã颿°ã䜿ãã®ãåºæ¬ã ã
ãã«ã以ååºãŠãã颿°ã§ããã
ææããã®é¢æ°ã¯ãHTMLã§ç¹å¥ãªæå³ãæã€èšå·ããå®å
šã«è¡šç€ºã§ããæå衚çŸãžå€æããã
ãã«ãã¹ã¯ãªãããåé€ããã®ã§ããã
ææãåé€ãããšãããããåœä»€ã§ã¯ãªãæåãšããŠæ±ãã圢ã«å€ãããšèããã»ããããã
ãã«ãå
ã»ã©ã®ã¹ã¯ãªãããå
¥åããŠããèŠåç»é¢ã¯åºããå
¥åãããå
容ãæåãšããŠç»é¢ã«è¡šç€ºãããã®ã§ããã
ææããã®ãšããããã©ãŠã¶ã«ãããã¯å®è¡ããåœä»€ã§ã¯ãªããç»é¢ã«èŠããæç« ã§ãããšäŒããããã ã
ãã«ã俳åªãèå°ã§ãéåžžå£ãéããããšèšã£ãŠããåå Žã®éåžžå£ã¯éããªãããããŸã§ã»ãªããšããŠæ±ãã®ã§ããã
ææãããäŸãã ãhtmlspecialchars()ã¯ãåœä»€ãã»ãªããžå€ããéèš³ã®ãããªãã®ã ã
ãªãåŒçšç¬Šã倿ããã®ã
ãã«ãhtmlspecialchars()ã§ã¯ãENT_QUOTESãUTF-8ãæå®ããŠããŸãããã
ææãENT_QUOTESã¯ãã·ã³ã°ã«ã¯ã©ãŒããšããã«ã¯ã©ãŒãã®äž¡æ¹ãå®å
šãªæåãžå€æããããã®æå®ã ãåŒçšç¬Šã¯HTML屿§ã®å¢çãšããŠäœ¿ãããããã察çãå¿
èŠã«ãªãã
ãã«ãUTF-8ã¯æåã³ãŒãã§ããã
ææãããã ãæ¥æ¬èªãå«ãçŸåšã®Webãµã€ãã§ã¯ãéåžžUTF-8ã䜿ããã€ãŸãå
šäœãšããŠã¯ãããã®æååãUTF-8ãšããŠæ±ããHTMLã§ç¹å¥ãªæå³ãæã€èšå·ãå®å
šãªè¡šç€ºçšæåãžå€ããŠãã ããããšããåŠçã«ãªãã
ãã«ãé·ãèŠããŸããããããããä»äºããã£ãã®ã§ããã
ææãçšåç³åæžãšåãã ãæå³ã®ãªãæ¬ã«èŠããŠãããããŠãäœãã®åœ¹å²ãããã
å ¥åæã«åé€ããã°ããã®ã
ãã«ãå±éºãªæåãå
¥åãããæç¹ã§åé€ããã°ããã®ã§ã¯ãããŸãããã
ææãå
¥åãã§ãã¯ãå¿
èŠã ããããã ãã«é Œãã®ã¯å±éºã ãæ»ææ¹æ³ããã¹ãŠäºæ³ããå±éºãªæååã ããå®å
šã«èŠåããã®ã¯é£ããã
ãã«ãããã§ã¯ãã©ãèããã°ããã®ã§ããããã
ææãå
¥åæã«ã¯ãæåæ°ã圢åŒãå¿
é é
ç®ãªã©ã確èªããããããŠç»é¢ã«è¡šç€ºãããšãã«ã¯ãè¡šç€ºå Žæã«å¿ããŠå®å
šãªåœ¢ãžå€æããã
ãã«ãå
¥å£ã§ç¢ºèªããéšå±ãžå
¥ãããšãã«ã確èªããã®ã§ããã
ææãããã ãããŒã¿ããŒã¹ããåãåºããå
容ããéå»ã«ä¿åããããã®ã ããå®å
šã ãšã¯éããªããå€éšããæ¥ãå¯èœæ§ã®ããããŒã¿ã¯ãåºåæã«ã泚æããã
SQLã€ã³ãžã§ã¯ã·ã§ã³å¯Ÿçãšã¯å¥ç©
ãã«ãããŒã¿ããŒã¹ã«ã¯ããªãã¢ãã¹ããŒãã¡ã³ãã䜿ãã°å®å
šã ãšèããŸãããããã§XSSãé²ããŸããã
ææãããã¯å¥ã®åé¡ã ãããªãã¢ãã¹ããŒãã¡ã³ãã¯ãäž»ã«SQLã€ã³ãžã§ã¯ã·ã§ã³ãé²ããããŒã¿ããŒã¹ãžã®åœä»€ãšãä¿åããããŒã¿ãåºå¥ããããã®å¯Ÿçã ã
ãã«ãXSSã¯äœãåºå¥ããã®ã§ããã
ææããã©ãŠã¶ãžã®åœä»€ãšãç»é¢ã«è¡šç€ºããæç« ãåºå¥ããã
ãã«ãåãå
¥åããŒã¿ã§ããããŒã¿ããŒã¹ãžå
¥ãããšããšãç»é¢ãžåºããšãã§å±éºãéãã®ã§ããã
ææããã®ãšãããé庫ã®éµãé äžã«ããŠããåä»ã«åœã®è·å¡ã座ãåé¡ãŸã§ã¯è§£æ±ºããªããããããå¥ã®å¯Ÿçãå¿
èŠã ã
htmlspecialchars()ã ãã§å®å šãªã®ã
ãã«ããããªãããã¹ãŠã«htmlspecialchars()ã䜿ãã°å®å
šã§ããã
ææãæ®éã®æç« ãHTMLæ¬æãžè¡šç€ºããå Žåã«ã¯ãéåžžã«éèŠãªåºæ¬å¯Ÿçã ããã ããè¡šç€ºå Žæã«ãã£ãŠå¿
èŠãªåŠçã¯ç°ãªãã
ãã«ãã©ã®ãããªéãã§ããã
ææãHTMLæ¬æãHTML屿§ãURLãJavaScriptã®å
éšã§ã¯ãæåã®è§£éæ¹æ³ãéããç¹ã«ãå©çšè
ãå
¥åããå
容ãJavaScriptã®äžãžçŽæ¥åã蟌ãèšèšã¯é¿ããã»ããããã
ãã«ãã©ããžåºåãããã«ãã£ãŠãå
è£
æ¹æ³ãå€ããã®ã§ããã
ææãããã ããŸããããã°ç·šéç»é¢ã®ããã«äžéšã®HTMLãèš±å¯ããå Žåã¯ããã¹ãŠãæ®éã®æåãžå€æããã ãã§ã¯ç®çãæãããªãããã®å Žåã¯ãèš±å¯ãããèŠçŽ ã ããæ®ããµãã¿ã€ãºãšããåŠçãå¿
èŠã«ãªãã
ãã«ã颿°ãäžã€èŠããã°åæ¥ããšããã»ã©åçŽã§ã¯ãªãã®ã§ããã
ææãããããæåã«èŠããååã¯åçŽã ãå€ããæ¥ãããŒã¿ãä¿¡çšããã衚瀺ããå Žæã«åãããŠå®å
šã«åŠçããããšã ã
XSS察çã®èŠç¹
ãã«ãæåŸã«ãèŠããŠããããšãæŽçããŠãã ããã
ææãåºæ¬ã¯æ¬¡ã®ãšããã ã
ã»å
¥åãã©ãŒã ãURLããåãåã£ãå
容ãããã®ãŸãŸè¡šç€ºããªã
ã»ããŒã¿ããŒã¹ããåãåºããå
容ããç¡æ¡ä»¶ã«ã¯ä¿¡çšããªã
ã»æ®éã®HTMLæ¬æãžè¡šç€ºãããšãã¯ãé©åã«ãšã¹ã±ãŒããã
ã»PHPã§ã¯htmlspecialchars()ãåºæ¬çãªå¯Ÿçã«ãªã
ã»å
¥åãã§ãã¯ã ãã§ãªããåºåæã«ã察çãã
ã»SQLã€ã³ãžã§ã¯ã·ã§ã³å¯ŸçãšXSS察çãæ··åããªã
ã»äžè¬å
¬éããŒãžã ãã§ãªãã管çç»é¢ã§ãå®å
šã«è¡šç€ºãã
ã»è¡šç€ºå Žæã«ãã£ãŠå¿
èŠãªå¯Ÿçãç°ãªãããšãçè§£ãã
ãã«ãçµå±ã人ãçããšããããšã§ããããã
ææã人ãçãå¿
èŠã¯ãªããçãã®ã¯ãå€ããå±ããæååã ã
ãã«ã人ã¯ä¿¡çšããŠããããŒã¿ã¯ç¢ºèªããã
ææãçšåã®ä»äºã§ãåãã ãããã客æ§ãä¿¡çšããããšãšã垳簿ã蚌æã確èªããªãããšã¯å¥åé¡ã ã
ãã«ããªãã»ã©ãæ¥ã«èº«è¿ãªè©±ã«ãªããŸããã
ã客æ§ã®å£°ãšåœä»€ãåºå¥ãã
ãã«ãXSSã¯ããã£ãšé£ããæ»æã ãšæã£ãŠããŸããã
ææãé«åºŠãªæ»ææ¹æ³ã¯ããããããããåºæ¬çãªä»çµã¿ã¯é£ãããªããæç« ãšããŠåãåãã¹ãå
容ãããã©ãŠã¶ãåœä»€ãšããŠå®è¡ããŠããŸãããããXSSã ã
ãã«ãéçºè
ã®ä»äºã¯ãæç« ãšåœä»€ããã¡ããšåºå¥ããããšã§ããã
ææããã®ãšããããåãåãããã©ãŒã ã§ã¯ãã客æ§ã®å£°ãåãåããªããã°ãªããªãããããããã©ãŠã¶ãžã®åœä»€æš©ãŸã§æž¡ãå¿
èŠã¯ãªãã
ãã«ãã客æ§ã¯å€§åã§ãããå
¥åå€ã«ã¯åä»ã§èº«åèšŒææžãèŠããŠãããããšã
ææããããŠã管çç»é¢ãžéãåã«ã¯æè·ç©æ€æ»ãããã
ãã«ãããã¶ãèŠæãããæååã§ããã
ææãæååã¯æ°ãæªãããªããé æ
®ãªãæ€æ»ããã°ããã
XSS察çã®æ¬è³ªã¯ãç¹å¥ã«è€éãªæè¡ã§ã¯ãããŸããã
å€éšããæ¥ãå
容ããã®ãŸãŸä¿¡çšããã衚瀺ãããšãã«ãåœä»€ã§ã¯ãªãæåãšããŠæ±ãã
ã客æ§ã®å£°ã¯ããã¡ããšåãåãã
ãããããã©ãŠã¶ãžã®åœä»€æš©ãŸã§ã¯æž¡ããªãã
ããããå®å
šãªWebãµã€ããäœãããã®ç¬¬äžæ©ã§ãã
