ãšã©ãŒåŠçã¯ãã·ã¹ãã ãæ£åžžã«åäœããããã«ãªã£ãŠãã远å ããæ©èœã§ã¯ãããŸãããããã¯ãã·ã¹ãã ãåäœããªããªã£ããšãã«ã©ã®ããã«åäœããããæ±ºå®ããèšèšäžã®æ±ºå®äºé ã§ãããæ¬çªç°å¢ã§ã¯ãåäœããªããªãã®ã¯ããã€ãèµ·ãããã®åé¡ã§ãã£ãŠããèµ·ãããã©ãããã®åé¡ã§ã¯ãããŸããããããã¯ãŒã¯ã¯ã¿ã€ã ã¢ãŠãããŸããããŒã¿ããŒã¹ã¯äžæçã«å©çšã§ããªããªããŸãããŠãŒã¶ãŒã¯ãéçºè ãæ³å®ããŠãããã¹ãŠã®åæã«åããå ¥åãéä¿¡ããŸããå€éšãµãŒãã¹ããäºæããªãå¿çãè¿ãããŸããããŒããŠã§ã¢ãæ éããŸãããããã®ç¶æ³ãã¹ãŠããããŒã¿ãç Žæãããæ©å¯æ å ±ãæŒæŽ©ããããããããšãªããäºæž¬å¯èœãªæ¹æ³ã§åŠçã§ããã·ã¹ãã ã¯ãåªããèšèšãšèšããŸãããããã®ããããã®ç¶æ³ãçºçãããšãã«ã¯ã©ãã·ã¥ããããç¶æ ãéãã«ç Žæããããå éšå®è£ ã®è©³çŽ°ãæŒæŽ©ãããããã·ã¹ãã ã¯ãã©ããªã«æ©èœéçºãé²ããŠã解決ã§ããªãæ§é çãªåé¡ãæ±ããŠããŸãã
ã³ãŒãããŒã¹å šäœã®ãšã©ãŒåŠç
SMART TS XL ç°å¢å ã®ããããèšèªãšãã©ãããã©ãŒã ã«ãããŠãæªåŠçã®äŸå€ããšã©ãŒåŠçã®äžåãæ€åºããŸãã
詳ããèŠã SMART TS XLäžé©åãªãšã©ãŒåŠçãããããå®éçãªåœ±é¿ã¯ãåãªã仮説ã§ã¯ãããŸãããäžé©åãªãšã©ãŒåŠçã¯ããœãããŠã§ã¢éçºã«ãããæãé倧ãªã»ãã¥ãªãã£ãªã¹ã¯ã®1ã€ãšããŠæç¢ºã«èªèãããŠããŸããOWASP A10:2025ïŒäŸå€çãªç¶æ³ã®äžé©åãªåŠçïŒã¯ãã·ã¹ãã ãééããç°åžžãªç¶æ³ã«èµ·å ããäžé©åãªãšã©ãŒåŠçãè«çãšã©ãŒããªãŒãã³ç¶æ ãžã®ãã§ã€ã«ããã®ä»ã®é¢é£ã·ããªãªã«çŠç¹ãåœãŠãŠããŸããããã¯ã2025幎ã®OWASP Top 10ã«æ°ãã«è¿œå ãããã«ããŽãªã§ããããšã©ãŒåŠçã®å€±æãéçšäžã®äžå®å®æ§ã ãã§ãªããæªçšå¯èœãªã»ãã¥ãªãã£è匱æ§ãçã¿åºããšããçè§£ãæ·±ãŸã£ãããšãåæ ããŠããŸãããã®ã«ããŽãªã®æ³šç®ãã¹ãè匱æ§ã«ã¯ãCWE-209ãæ©å¯æ å ±ãå«ããšã©ãŒã¡ãã»ãŒãžã®çæããCWE-476ãNULLãã€ã³ã¿ã®éåç §ããCWE-636ãå®å šãªãã§ã€ã«ãªãŒããŒã®æ¬ åŠããªã©ããããŸãããããã®è匱æ§ã¯ãã³ãŒãããŒã¹å šäœã«äžè²«ããŠé©çšãããèŠåŸãããšã©ãŒåŠçææ³ã«ãã£ãŠããããã鲿¢å¯èœã§ãã
ãœãããŠã§ã¢éçºã«ããããšã©ãŒåŠçãšã¯äœã
ãšã©ãŒåŠçãšã¯ããœãããŠã§ã¢ã·ã¹ãã ãæ£åžžãªå®è¡ã劚ããç¶æ ãæ€åºãåé¡ãããã³å¯Ÿå¿ããããã®äžé£ã®ã¡ã«ããºã ã®ããšã§ããããã«ã¯ãäŸå€ã®ææããšã©ãŒç¶æ ã®ç®¡çã蚺æãã°ã®èšé²ããŠãŒã¶ãŒãŸãã¯äžæµã·ã¹ãã ãžã®é害ã®éç¥ãããã³åœ±é¿ãåããããã»ã¹ã®å¶åŸ¡ãããå埩ãŸãã¯çµäºãå«ãŸããŸããé©åãªãšã©ãŒåŠçãåããã·ã¹ãã ã¯ã決ããŠé害ãçºçããªãã·ã¹ãã ã§ã¯ãããŸãããããã¯ãããŒã¿ç Žæãæ©å¯æ å ±ã®æŒæŽ©ãããã³æ¬æ¥ã§ããã°åäœãç¶ç¶ã§ããã¯ãã®ã³ã³ããŒãã³ããžã®é害ã®äŒæãèµ·ããããšãªããé害ã«å¯ŸããŠäºæž¬å¯èœãªå¯Ÿå¿ãè¡ãã·ã¹ãã ã§ãã
äºæž¬å¯èœãªé害ãšç¡ç§©åºãªé害ã®åºå¥ã¯ãéçšäžéåžžã«éèŠã§ããäºæž¬å¯èœãªé害ãçºçããã·ã¹ãã ã¯ãæç¢ºãªãã°ãçæããå®çŸ©ããã埩æ§ã¡ã«ããºã ãããªã¬ãŒããéçšããŒã ãåé¡ã®èšºæãšè§£æ±ºã«å¿ èŠãªæ å ±ãæäŸããŸããäžæ¹ãç¡ç§©åºãªé害ãçºçããã·ã¹ãã ã¯ãäžå®å šãªãã°ãçæããç®ã«èŠããé害ãçºçããåã«ãµã€ã¬ã³ããšã©ãŒã«ãã£ãŠç¶æ ãç Žæãããªã³ã³ãŒã«ããŒã ã¯ã€ã³ã·ãã³ãçºçæéã®ã»ãšãã©ããåé¡ã解決ããã®ã§ã¯ãªããäœãèµ·ãã£ãã®ããåæ§ç¯ããããšã«è²»ãããããåŸãªããªããŸãã10åã§çµããã€ã³ã·ãã³ããš3æéãããã€ã³ã·ãã³ãã®éãã¯ãå€ãã®å Žåãé害ãã®ãã®ã§ã¯ãªãããã®é害ãåãå·»ããšã©ãŒåŠçã®è³ªã«ãããŸãã
ãšã©ãŒåŠçã¯ãã»ãã¥ãªãã£ã«ãçŽæ¥çãªåœ±é¿ãåãŒããŸããäžé©åãªãšã©ãŒåŠçã«ãã£ãŠåŒãèµ·ããããæãäžè¬çãªã»ãã¥ãªãã£åé¡ã¯ãã¹ã¿ãã¯ãã¬ãŒã¹ãããŒã¿ããŒã¹ãã³ãããšã©ãŒã³ãŒããªã©ã®è©³çްãªå éšãšã©ãŒã¡ãã»ãŒãžããŠãŒã¶ãŒã«è¡šç€ºãããããšã§ãããããã®ã¡ãã»ãŒãžã¯ã決ããŠå ¬éãããã¹ãã§ã¯ãªãå®è£ ã®è©³çްãæããã«ããããã«ãŒã«ãµã€ãã®æœåšçãªè匱æ§ã«é¢ããéèŠãªæããããäžããŠããŸããŸãã广çãªãšã©ãŒåŠçã§ã¯ãå éšã«èšé²ãããèšºææ å ±ãšããŠãŒã¶ãŒã«è¿ãããæ å ±ããŸãã¯APIãéããŠå ¬éãããæ å ±ãšã®éã«å³å¯ãªåé¢ãç¶æããå¿ èŠããããŸãã
ãœãããŠã§ã¢ãšã©ãŒã®çš®é¡ãšãã®ç¹å®æ¹æ³
ãœãããŠã§ã¢ãšã©ãŒã¯åäžãªã«ããŽãªãŒã§ã¯ãããŸãããçºçææãæ€åºæ¹æ³ãå¿ èŠãªå¯Ÿå¿ããããŠãã®å¯Ÿå¿ãèªååã§ãããã©ãããªã©ãæ§ã ãªç¹ã§ç°ãªããŸãããã¹ãŠã®ãšã©ãŒã«åãã¡ã«ããºã ãé©çšããã®ã§ã¯ãªããããããã®ãšã©ãŒã¿ã€ãã«é©ããåŠçæŠç¥ãèšèšããããã«ã¯ããŸãåé¡äœç³»ãçè§£ããããšãäžå¯æ¬ ã§ãã
æ§æãšã©ãŒ
æ§æãšã©ãŒã¯ãã³ãŒããããã°ã©ãã³ã°èšèªã®ææ³èŠåã«éåããå Žåã«çºçããŸããã³ã³ãã€ã©ãã€ã³ã¿ããªã¿ã¯å®è¡åã«æ§æãšã©ãŒãæ€åºãããããæãæ±ããããã«ããŽãªã§ããèªåãã«ããã€ãã©ã€ã³ãåããã·ã¹ãã ã§ã¯ãæ¬çªç°å¢ã«å°éããããšã¯ãããŸãããããããPythonãJavaScriptã®ãããªã€ã³ã¿ããªã¿åèšèªã§ã¯ããã¹ãã¹ã€ãŒãã§å®è¡ãããªãã³ãŒããã¹ã®æ§æãšã©ãŒãæ¬çªç°å¢ã«å°éãããããã®ãã¹ãæåã«å®è¡ããããšãã«å®è¡æãšã©ãŒãåŒãèµ·ããå¯èœæ§ããããŸãããã®ãããªç°å¢ã§ã¯ããªã³ãã£ã³ã°ããŒã«ãéçè§£æããŒã«ããããã€åã«æ§æãšã©ãŒãæ€åºããŸãã
ã©ã³ã¿ã€ã ãšã©ãŒ
å®è¡æãšã©ãŒã¯ãããã°ã©ã ãéåžžã®å¶åŸ¡ãããŒã§ã¯åŠçã§ããªãç¶æ³ã«ééããéã«çºçããŸããäŸãã°ããã«ãã€ã³ã¿ã®éåç §ããŒãé€ç®ãååšããªããã¡ã€ã«ããããã¯ãŒã¯æ¥ç¶ã®å€±æãäžæçã«å©çšã§ããªãããŒã¿ããŒã¹ãªã©ãæããããŸããå®è¡æãšã©ãŒã¯äºæž¬äžå¯èœã§ãããã³ãŒãã®å¶åŸ¡ç¯å²å€ã®å€éšæ¡ä»¶ã«äŸåãããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡äžã®ã©ã®æç¹ã§ãçºçããå¯èœæ§ããããããæ¬çªã·ã¹ãã ã«ããããšã©ãŒåŠçã¡ã«ããºã ã®äž»èŠãªå¯Ÿè±¡ãšãªããŸãã
å®è¡æãšã©ãŒã¯ãå埩å¯èœãªãã®ãšå埩äžå¯èœãªãã®ã«ããã«åé¡ãããããã¯ãšã©ãŒåŠçã·ã¹ãã ãè¡ãã¹ãæãéèŠãªéçšäžã®åé¡ã§ããäžæçãªããŒã¿ããŒã¹æ¥ç¶ã®å€±æã¯å埩å¯èœãªå®è¡æãšã©ãŒã§ãããå°ãåŸ ã£ãŠããå詊è¡ããã°æåããå¯èœæ§ãé«ãã§ããã¢ããªã±ãŒã·ã§ã³ã®åæåã劚ããæ§æãã¡ã€ã«ã®ç Žæã¯å埩äžå¯èœãªå®è¡æãšã©ãŒã§ãããå詊è¡ããŠã解決ãããé©åãªå¯Ÿå¿ã¯æç¢ºãªèšºæã¡ãã»ãŒãžãšãšãã«å¶åŸ¡ãããçµäºãè¡ãããšã§ããããã2ã€ã®ã«ããŽãªãåäžèŠããå詊è¡ããŠã解決ã§ããªãç¶æ³ã«åãå詊è¡ããžãã¯ãé©çšããããšã¯ãæ¬çªã·ã¹ãã ã§ãšã©ãŒåŠçãæŽèµ°ããæãäžè¬çãªåå ã®1ã€ã§ãã
è«çãšã©ãŒ
è«çãšã©ãŒã¯ãæšæºçãªãšã©ãŒåŠçã¡ã«ããºã ã§ã¯æ€åºãããªããããæãå±éºãªã«ããŽãªãšèšããŸããããã°ã©ã ã¯äŸå€ãçºçãããããšãªãå®è¡ãããŸãããå®è£ ãããããžãã¯ãæå³ããåäœãšäžèŽããªãããã誀ã£ãçµæãçæãããŸããã«ãŒãå ã®ãªããã€ã¯ã³ãšã©ãŒãå«ãäŸ¡æ Œèšç®ãã¿ã€ã ãŸãŒã³ã®éããèæ ®ããªãæ¥ä»æ¯èŒã誀ã£ããŠãŒã¶ãŒã»ããã«ã¢ã¯ã»ã¹æš©ãä»äžããèªèšŒãã§ãã¯ãªã©ã¯ãè«çãšã©ãŒã®äžäŸã§ãããããã®ãšã©ãŒã¯äŸå€ãã³ãã©ãããªã¬ãŒããããšã©ãŒãã°ã«ãèšé²ããããå€ãã®å Žåã誰ããåé¡ã«æ°ã¥ãåã«ã誀ã£ãçµæãè€æ°ã®äžæµã·ã¹ãã ã«äŒæããŠããŸããŸãã
è«çãšã©ãŒã®æ€åºã«ã¯ãäŸå€ã®ææã§ã¯ãªããçµæã®æ€èšŒãå¿ èŠã§ããã€ãŸããäºåŸæ¡ä»¶ãæ€èšŒããã¢ãµãŒã·ã§ã³ãæ¢ç¥ã®æ£ããåç §å€ã«å¯ŸããŠåºåãæ€èšŒããæ¯èŒãã¹ãããããŠããžãã¹ææšãæ³å®ç¯å²ããéžè±ããå Žåã«èŠåãçºããã¢ãã¿ãªã³ã°ãå¿ èŠãšãªããŸãã
ã·ã¹ãã ãšã©ãŒ
ã·ã¹ãã ãšã©ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®å€éšã§çºçããŸããããŒããŠã§ã¢é害ãã¡ã¢ãªäžè¶³ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãªãœãŒã¹å¶éããããã¯ãŒã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ã®é害ãªã©ããã®äŸã§ãããããã®ãšã©ãŒã¯éåžžãã¢ããªã±ãŒã·ã§ã³åç¬ã§ã¯è§£æ±ºã§ãããã€ã³ãã©ã¹ãã©ã¯ãã£å±€ãšé£æºãã察å¿ãå¿ èŠã§ããå ·äœçã«ã¯ãåé·ã³ã³ããŒãã³ããžã®ãã§ã€ã«ãªãŒããŒãæ©èœå¶éãäŒŽãæ®µéçãªããŠã³ã°ã¬ãŒããéçšããŒã ãžã®éç¥ã䌎ãå¶åŸ¡ãããã·ã£ããããŠã³ãªã©ãæããããŸããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®åœ¹å²ã¯ããããã®ç¶æ³ãæ©æã«æ€ç¥ãã壿» çãªé害ã§ã¯ãªãé©åãªããŠã³ã°ã¬ãŒãã§å¯Ÿå¿ããã€ã³ãã©ã¹ãã©ã¯ãã£ããŒã ãäœãèµ·ãã£ãã®ããçè§£ã§ãããããªèšºææ å ±ãçæããããšã§ãã
以äžã®è¡šã¯ãåãšã©ãŒã®çš®é¡ãšããããæ€åºããã¡ã«ããºã ããã³é©åãªå¯Ÿå¿æŠç¥ã察å¿ä»ãããã®ã§ãã
| ãšã©ãŒã¿ã€ã | ãããçºçããå Žå | æ€åºã¡ã«ããºã | å¯Ÿå¿æŠç¥ |
|---|---|---|---|
| æ§æ | ã³ã³ãã€ã«/è§£éæé | ã³ã³ãã€ã©ããªã³ã¿ãŒãéçè§£æ | ãããã€åã«ä¿®æ£ããŠãã ãã |
| å®è¡æïŒå埩å¯èœïŒ | å®è¡ | try-catchãäŸå€åŠç | ããã¯ãªãããã©ãŒã«ããã¯ãã¹ã䜿çšããŠåè©Šè¡ |
| å®è¡æãšã©ãŒïŒå埩äžèœïŒ | å®è¡ | try-catchãäŸå€åŠç | å¶åŸ¡ãããçµäºããšã¹ã«ã¬ãŒã·ã§ã³ |
| ããžã㯠| å®è¡ | çµæã®æ€èšŒãã¢ãã¿ãªã³ã° | è«çä¿®æ£ãããŒã¿ç£æ» |
| ã·ã¹ãã | å®è¡ | ã€ã³ãã©ç£èŠãã¢ã©ãŒã | ãã§ã€ã«ãªãŒããŒãã°ã¬ãŒã¹ãã«ãã°ã©ããŒã·ã§ã³ |
äžé©åãªãšã©ãŒåŠçã®çµæ
äžé©åãªãšã©ãŒåŠçã®çµæã¯4ã€ã®ã«ããŽãªãŒã«åé¡ããããããããéçšé¢ãŸãã¯äºæ¥é¢ã«çŽæ¥çãªåœ±é¿ãåãŒããŸãããããã®åœ±é¿ãå ·äœçã«çè§£ããããšããäœç³»çãªãšã©ãŒåŠçã¢ãããŒããžã®ãšã³ãžãã¢ãªã³ã°æè³ãæ£åœåããæ ¹æ ãšãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®äžå®å®æ§ãšé£éçãªé害
åŠçãããªãäŸå€ãã³ãŒã«ã¹ã¿ãã¯ã®æäžäœãŸã§äŒæãããšããã®äŸå€ãçºçããããã»ã¹ãŸãã¯ã¹ã¬ãããçµäºããŸããWebã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããã¯ãŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«å¯ŸããŠå¿çããªããããŸãã¯å¯ŸåŠå¯èœãªæ å ±ãæäŸããªãäžè¬çãªãšã©ãŒå¿çãè¿ãããããšãæå³ããŸããã¢ã¯ãã£ããªãã©ã³ã¶ã¯ã·ã§ã³ãŸãã¯ã»ãã·ã§ã³ç¶æ ãæã€ã·ã¹ãã ã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãéšåçã«å®äºããç¶æ ã®ãŸãŸã«ãªããããŒã¿ããŒã¹ã®èгç¹ããèŠãŠççŸãçããå¯èœæ§ããããŸãã
ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã§ã¯ãæªåŠçã®ãšã©ãŒã«ããã¢ããªã±ãŒã·ã§ã³ã®äžå®å®æ§ã¯ãé£éçãªåœ±é¿ãåãŒããŸããå€éšäŸåé¢ä¿ã«ãµãŒããããã¬ãŒã«ãŒãå®è£ ããŠããªããµãŒãã¹ã¯ããããã®äŸåé¢ä¿ãé ããªã£ããå©çšã§ããªããªã£ãããããšãå®äºããªããªã¯ãšã¹ãã詊è¡ããèªèº«ã®æ¥ç¶ããŒã«ãæ¯æžãããŠããŸããŸããæ¥ç¶ããŒã«ãæ¯æžãããšãæ ¹æ¬åå ãåŒã³åºãå ã«é¢ä¿ããŠãããã©ããã«é¢ãããããµãŒãã¹ã¯èªèº«ã®ã¢ããã¹ããªãŒã åŒã³åºãå ããå©çšã§ããªããªããŸããäŸå€ãç¡èŠãããããšã©ãŒã¡ãã»ãŒãžã«æ©å¯ããŒã¿ãæŒæŽ©ãããããµã€ã¬ã³ãã«é害ãçºçãããããããªã©ãäžé©åãªãšã©ãŒåŠçã¯ããã°ãšã»ãã¥ãªãã£è匱æ§ã®äž¡æ¹ã®äžè¬çãªåå ãšãªããŸãããµã€ã¬ã³ãé害ã¯ãã¢ã©ãŒããçºçããåã«é害ãç®ã«èŠããªã圢ã§äŒæããŠããŸãããã忣ã·ã¹ãã ã§ã¯ç¹ã«æå®³ã§ãã
ããŒã¿æŽåæ§ã®ç Žæ
è€æ°ã¹ãããã®æžãèŸŒã¿æäœã®éäžã§ãšã©ãŒãçºçããå Žåããããã®æäœãã¢ãããã¯ãã©ã³ã¶ã¯ã·ã§ã³ã§ã©ãããããŠããªããšãã·ã¹ãã ãççŸããç¶æ ã«ãªãå¯èœæ§ããããŸããå žåçãªäŸã¯æ±ºæžåŠçã§ãããŠãŒã¶ãŒã®æ±ºæžæ¹æ³ãžã®è«æ±ã¯æåãããã察å¿ããæ³šæã¬ã³ãŒãã®äœæãè£åãã©ã³ã¶ã¯ã·ã§ã³ãããªã¬ãŒããã«å€±æããå ŽåããŠãŒã¶ãŒã«ã¯ã·ã¹ãã ã«ååšããªãè³Œå ¥ã«å¯ŸããŠè«æ±ãè¡ãããŸããäºåŸçã«ããã解決ããã«ã¯æåã§ã®ç §åãå¿ èŠãšãªããã³ã¹ãããããããšã©ãŒãçºçãããããäžå®å šãªçµæãæãå¯èœæ§ããããŸãã
äžé©åãªãšã©ãŒåŠçã«ãã£ãŠåŒãèµ·ããããããŒã¿æŽåæ§é害ã¯ãå€ãã®å Žåã誀ã£ãããŒã¿ãå©çšããäžæµã·ã¹ãã ãæ¢ã«ãã®ããŒã¿ã«åºã¥ããŠäœããã®åŠçãå®è¡ããåŸã«ãªã£ãŠåããŠçºèŠããŸãããšã©ãŒçºçããçºèŠãŸã§ã®é å»¶ãé·åŒãã»ã©ã修埩ã³ã¹ãã¯å¢å€§ããŸãããã®ãããã¢ãããã¯ãã©ã³ã¶ã¯ã·ã§ã³èšèšã«ããäºé²ã¯ãä¿®æ£ãããã¯ããã«äœã³ã¹ãã§ãã
ãšã©ãŒåºåã«èµ·å ããã»ãã¥ãªãã£è匱æ§
ããŒã¿ããŒã¹ãšã©ãŒã®äžé©åãªåŠçã«ãã£ãŠæ©å¯ããŒã¿ãæŒæŽ©ããã·ã¹ãã ãšã©ãŒã®å šå®¹ããŠãŒã¶ãŒã«å ¬éããããšãæ»æè ã¯ãã广çãªæšçåæ»æã仿ããããã«å¿ èŠãªæ å ±ãå ¥æã§ããŠããŸããŸããããã¯çŸåšãOWASP 2025ã§ããã10ã®ã»ãã¥ãªãã£ãªã¹ã¯ãšããŠæ£åŒã«åé¡ãããŠããŸããHTTPã¬ã¹ãã³ã¹ã§å ¬éãããã¹ã¿ãã¯ãã¬ãŒã¹ããã¯ããã¬ãŒã ã¯ãŒã¯ã®ããŒãžã§ã³ããã¡ã€ã«ãã¹ãã¯ã©ã¹åãã¡ãœããã·ã°ããã£ãæããã«ãªããŸããããŒã¿ããŒã¹ãšã©ãŒã¡ãã»ãŒãžããã¯ãããŒãã«åãååãã¯ãšãªæ§é ãæããã«ãªããŸãããããã®è©³çްæ å ±ã«ãã£ãŠãSQLã€ã³ãžã§ã¯ã·ã§ã³æ»æããã¹ãã©ããŒãµã«æ»æãæåãããããã«å¿ èŠãªåŽåããæšæž¬ããæ å ±ã«åºã¥ããæšçåæ»æãžãšå€§å¹ ã«åæžãããŸãã
ãã®åé¡ã解決ããã«ã¯ã2ã€ã®ããšãå¿ èŠã§ãã1ã€ç®ã¯ããŠãŒã¶ãŒãšæ¥ããå¢çã«ãããã¹ãŠã®äŸå€ãã³ãã©ãããŠãŒã¶ãŒã«é©ããã¡ãã»ãŒãžã®ã¿ãè¿ããå éšã®è©³çްæ å ±ãæ±ºããŠè¿ããªãããšã2ã€ç®ã¯ãå éšèšºææ å ±ãç Žæ£ããã®ã§ã¯ãªããé©åãªã¢ã¯ã»ã¹å¶åŸ¡ãåãããã°ã·ã¹ãã ã«èšé²ããããšã§ãããŠãŒã¶ãŒåãã¡ãã»ãŒãžãšèšºæã¡ãã»ãŒãžã¯ããããç°ãªãç®çãæã€ãããç¬ç«ããŠçæãããã¹ãã§ãã
äžè²«æ§ã®ãªããšã©ãŒåŠçã«ããä¿å®è² åµ
ãšã©ãŒåŠçã«æšæºåãããã¢ãããŒãããªãã³ãŒãããŒã¹ã¯ãèŠæš¡ã倧ãããªãã«ã€ããŠä¿å®äžã®è² åµãèç©ãããŸããéçºè ããšã«ç¬èªã®æ £ç¿ãæ¡çšãããã«ã¹ã¿ã äŸå€ã䜿çšããéçºè ããšã©ãŒã³ãŒããè¿ãéçºè ãçºçç®æã§ãã°ãèšé²ããéçºè ããã°ãèšé²ããã«äŒæãããéçºè ãªã©ãããŸãããã®çµæãæ¬çªç°å¢ã§ã®é害ã®åå ãè§£æããã«ã¯ãäºææ§ã®ãªã圢åŒã®è€æ°ã®ãã°ãã¡ã€ã«ãèªã¿èŸŒã¿ãã¢ãžã¥ãŒã«ããšããŸãéçºè ããšã«ç°ãªããšã©ãŒåŠçã®æ £ç¿ãçè§£ããé¢é£ããcatchãããã¯ã空ã§ãã£ãããå ã®äŸå€ã³ã³ããã¹ããç Žæ£ããäžè¬çãªã¡ãã»ãŒãžãããã°ã«èšé²ãããªãã£ãããã«ãå®éã®æ ¹æ¬åå ããã°ã«èšé²ãããŠããªãã£ãããšãé »ç¹ã«çºèŠããå¿ èŠãçããŸãã
ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã«ããããšã©ãŒåŠçã®ãã¹ããã©ã¯ãã£ã¹
以äžã®ãã¹ããã©ã¯ãã£ã¹ã¯ãåãªãã¹ã¿ã€ã«ã®å¥œã¿ã§ã¯ãããŸããããããããããã®ãã©ã¯ãã£ã¹ãæ¬ åŠããŠããå Žåã«çºçãããç¹å®ã®é害ã¢ãŒãã«å¯ŸåŠãããã®ã§ãããããã¯åºç€çãªãã®ããé«åºŠãªãã®ãžãšé ã«äžŠã¹ãããŠããããšã©ãŒåŠçã·ã¹ãã ãæ§ç¯ãŸãã¯æ¹ä¿®ããããŒã ãåãçµãã¹ãé åºãåæ ããŠããŸãã
ãšã©ãŒãæ€åºæç¹ã§å埩å¯èœãå埩äžå¯èœãã«åé¡ãã
ãšã©ãŒåŠçã«é¢ãããããã倿ã¯ããŸãäžã€ã®åé¡ããå§ãŸããŸããããã¯ããã®ãšã©ãŒã¯äººéã®ä»å ¥ãªãã«è§£æ±ºã§ããã®ãããããšããšã¹ã«ã¬ãŒã·ã§ã³ãããã»ã¹ã®çµäºãå¿ èŠãªã®ãããšããåé¡ã§ãããã®åé¡ã¯ããšã©ãŒãæåã«æ€åºãããæç¹ã§è¡ãããã¹ãã§ãããåé¡ã®æ ¹æ ãšãªãã³ã³ããã¹ãã倱ãããŠããŸãã³ãŒã«ã¹ã¿ãã¯ã®äžäœã¬ãã«ãŸã§å»¶æãããã¹ãã§ã¯ãããŸããã
å埩å¯èœãªãšã©ãŒãšã¯ãå詊è¡ã代æ¿ãã¹ãžã®ãã©ãŒã«ããã¯ããŸãã¯æ©èœå¶éä»ãå¿çã«ãã£ãŠæäœã蚱容ç¯å²å ã§å®äºã§ãããšã©ãŒã§ããå埩äžå¯èœãªãšã©ãŒãšã¯ãå®è¡ãç¶ç¶ãããšèª€ã£ãçµæãçããããããŒã¿ãç Žæããããã»ãã¥ãªãã£äžã®è匱æ§ãçºçããããããšã©ãŒã§ããå¿ èŠãªæ§æãã¡ã€ã«ãååšããªããéèŠãªã¹ãã¬ãŒãžã§ããŒã¿ç Žæãæ€åºãããããã©ãŒã«ããã¯ããªãç¶æ ã§ãªãœãŒã¹ãæ¯æžããããšãã£ããšã©ãŒã¯å埩äžå¯èœã§ããäžæçãªãããã¯ãŒã¯ã¿ã€ã ã¢ãŠããå€éšAPIããã®ã¬ãŒãå¶éå¿çãããã³äžæçã«å©çšã§ããªãã»ã«ã³ããªãµãŒãã¹ã¯å埩å¯èœã§ãã
å埩äžèœãªãšã©ãŒãå埩å¯èœãšèª€åé¡ããå詊è¡ããžãã¯ãé©çšãããšãå詊è¡ã®åµãçºçããŸããããã¯ãå詊è¡ã«ãã£ãŠæ¹åã§ããªãç¶æ³ã«å¯ŸããŠããã»ã¹ãç¡éã«ãŒãããä»ã®ãªã¯ãšã¹ãã«å¯Ÿå¿ã§ããã¯ãã®ãªãœãŒã¹ãæ¶è²»ããŠããŸãç¶æ ã§ããå埩å¯èœãªãšã©ãŒãå埩äžèœãšèª€åé¡ããããã»ã¹ãçµäºããããšãäžèŠãªããŠã³ã¿ã€ã ãçºçããŸãããšã©ãŒã®åé¡ã¯èšèšäžã®æ±ºå®äºé ã§ãããåcatchãããã¯ã§å Žåœããçã«è¡ãã®ã§ã¯ãªãããšã©ãŒã®çš®é¡ããšã«ææžåããå¿ èŠããããŸãã
éäžåãšã©ãŒåŠçãå®è£ ãã
éäžåãšã©ãŒåŠçãšã¯ãã·ã¹ãã å ã®åäžã®å Žæã§ããšã©ãŒã®åä¿¡ãåé¡ãæšæºåãããã¡ã¿ããŒã¿ã«ãããã°èšé²ãããã³å¯Ÿå¿ããªã·ãŒã®æ±ºå®ãæ åœããããšãæå³ããŸããåã ã®ã¢ãžã¥ãŒã«ã¯ãšã©ãŒãæ€åºããŠäŒæããŸããããã°ã®ãã©ãŒããããã¢ã©ãŒãã®ãããå€ããŸãã¯å¯Ÿå¿æŠç¥ã«ã€ããŠã¯è²¬ä»»ãè² ããŸããããããã¯éäžåãã³ãã©ãŒã§äžåºŠå®çŸ©ãããäžè²«ããŠé©çšãããŸãã
Web ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãéäžåãšã©ãŒåŠçã¯éåžžããªã¯ãšã¹ãå¢çã§æªåŠçã®äŸå€ããã¹ãŠãã£ãããããªã¯ãšã¹ã ã³ã³ããã¹ã (ãŠãŒã¶ãŒèå¥åããªã¯ãšã¹ãèå¥åããšã³ããã€ã³ããæé) ãšãšãã«ãã°ã«èšé²ããåé¡ããžãã¯ãé©çšãããšã©ãŒ ã¯ã©ã¹ã«é©ããã¬ã¹ãã³ã¹ãè¿ãããã«ãŠã§ã¢ ã³ã³ããŒãã³ãã®åœ¢åŒããšããŸããèšèªãã¬ãŒã ã¯ãŒã¯ã¯ããã®ããã®ããã¯ãæäŸããŸããNode.js ã® Express ããã«ãŠã§ã¢ã @ControllerAdvice Spring ã®ãšã©ãŒå¢çã³ã³ããŒãã³ããReact ã®ãšã©ãŒå¢çã³ã³ããŒãã³ãã app.errorhandler Flask ã§ã
ãã®å©ç¹ã¯äžè²«æ§ã§ããã·ã¹ãã å ã®ã©ãã«èšé²ããããšã©ãŒããã¹ãŠåã圢åŒã§ãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãééãããšã©ãŒã¯ãã¹ãŠåããµãã¿ã€ãºããžãã¯ã§ãã£ã«ã¿ãªã³ã°ãããŸããå®çŸ©ãããé倧床ãããå€ãè¶ ãããšã©ãŒã¯ãã¹ãŠåãã¢ã©ãŒããããªã¬ãŒããŸãããã®äžè²«æ§ãããããã°åæãšã€ã³ã·ãã³ã察å¿ãæäœæ¥ã§ã¯ãªãå¹ççãªãã®ã«ããã®ã§ãã
å詊è¡ã«ãžãã¿ãŒä»ãææ°ããã¯ãªããå®è£ ãã
ããã¯ãªããªãã®å詊è¡ã¯ã解決ããããšããŠããåé¡ãæªåãããŸããããŒã¿ããŒã¹ãäžæçã«éè² è·ç¶æ ã«ãªãã100å°ã®ã¯ã©ã€ã¢ã³ããåæã«1ç§ééã§å€±æãããªã¯ãšã¹ãã®å詊è¡ãéå§ãããšãå詊è¡ãã©ãã£ãã¯ã«ãã£ãŠããŒã¿ããŒã¹ãå šãå埩ã§ããªããªãå¯èœæ§ããããŸããææ°ããã¯ãªãã¯å詊è¡éã®é å»¶ãæ®µéçã«å¢å ãããããšã§ãé害ãçºçããã³ã³ããŒãã³ããžã®å詊è¡ã®è² è·ã軜æžããå埩ã®ããã®æéãäžããŸãã
ãžãã¿ãŒã¯é å»¶ã«ã©ã³ãã æ§ãå°å ¥ããããšã§ããªãã©ã€ã®é£éãé²ããŸãããã¹ãŠã®ã¯ã©ã€ã¢ã³ããåãæ±ºå®è«çãªããã¯ãªãã¹ã±ãžã¥ãŒã«ã䜿çšãããšãåé å»¶æéåŸã«ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããåãã¿ã€ãã³ã°ã§ãªãã©ã€ãããããåæã®åé¡ãåçŸãããŸããé å»¶ãäžå®ã®ç¯å²å ã§ã©ã³ãã åããããšã§ãè€æ°ã®ã¯ã©ã€ã¢ã³ãããã®ãªãã©ã€ãã©ãã£ãã¯ãåæããã®ã§ã¯ãªããæéçã«åæ£ãããããšãä¿èšŒãããŸãã
å詊è¡ã¯ãå詊è¡å¯Ÿè±¡ã®æäœãåªçã§ããå Žåã«éãå®å šã§ããåªçæ§ãšã¯ãæäœãè€æ°åå®è¡ããŠãã1åå®è¡ããå ŽåãšåãçµæãåŸãããããšãæå³ããŸããèªã¿åãæäœã¯æ¬è³ªçã«åªçã§ããæžãèŸŒã¿æäœã¯ãèšèšäžåªçã«ããå¿ èŠããããŸããéåžžã¯ããµãŒããŒãåããªã¯ãšã¹ãã®è€æ°åã®é ä¿¡ãéè€æé€ããããã«äœ¿çšããåªçæ§ããŒããªã¯ãšã¹ãã«å«ããããšã§å®çŸããŸãã
ãã€ãœã³
import time
import random
def with_retry(operation, max_attempts=4, base_delay_seconds=1.0):
"""
Execute an operation with exponential backoff and jitter.
Only retries on recoverable IOError and TimeoutError.
Propagates all other exceptions immediately without retry.
"""
for attempt in range(max_attempts):
try:
return operation()
except (IOError, TimeoutError) as exc:
if attempt == max_attempts - 1:
raise # exhausted retries, propagate
delay = base_delay_seconds * (2 ** attempt) + random.uniform(0, 0.5)
print(f"Attempt {attempt + 1} failed ({exc}). Retrying in {delay:.1f}s")
time.sleep(delay)
except Exception:
raise # unrecoverable, do not retry
å®å šãªèšºæã³ã³ããã¹ããåããæ§é åãã°ã䜿çšãã
äŸå€ã¡ãã»ãŒãžã®ã¿ãå«ããã°ãšã³ããªã§ã¯ãå®è¡ãããæäœãåãåã£ãå ¥åãããã³åœæã®ã·ã¹ãã ã®ç¶æ ã«é¢ããã³ã³ããã¹ãããªãããããããã°ãšã³ãžãã¢ã¯ãšã©ãŒãçè§£ããããã«ãšã©ãŒãåçŸããå¿ èŠããããŸããæ¬çªç°å¢ã§ã¯ãåçŸãäžå¯èœãªå ŽåããããããŸããæ§é åãã°ã§ã¯ããšã©ãŒãå®çŸ©æžã¿ã®ãã£ãŒã«ããæã€ãªããžã§ã¯ããšããŠãã£ããã£ããŸããå®çŸ©æžã¿ã®ãã£ãŒã«ãã«ã¯ãISO 8601圢åŒã®ã¿ã€ã ã¹ã¿ã³ããé倧床ã¬ãã«ãäžæã®ãšã©ãŒèå¥åãã¢ãžã¥ãŒã«ãšé¢æ°ãå®å šãªã¹ã¿ãã¯ãã¬ãŒã¹ãããã³ãŠãŒã¶ãŒèå¥åããªã¯ãšã¹ãèå¥åã倱æããæäœã«é¢é£ãããã©ã¡ãŒã¿ãªã©ã®æäœåºæã®ã³ã³ããã¹ããã£ãŒã«ããå«ãŸããŸãã
ãã®æ§é ã«ãããéæ§é åãã°ããã¹ãã§ã¯äžå¯èœãªããã°ã·ã¹ãã ã«å¯Ÿããã¯ãšãªãå¯èœã«ãªããŸããäŸãã°ãéå»30åéã®æ¯æãã¢ãžã¥ãŒã«ã«ããããã¹ãŠã®ã¿ã€ã ã¢ãŠããšã©ãŒãéå»24æé以å ã«ãŠãŒã¶ãŒID 12345ããã®ãªã¯ãšã¹ãã«åœ±é¿ãäžãããã¹ãŠã®ãšã©ãŒãã¹ã¿ãã¯ãã¬ãŒã¹ã«ç¹å®ã®é¢æ°ãžã®åç §ãå«ãŸããŠãããã¹ãŠã®ãšã©ãŒãªã©ã§ãããããã®ã¯ãšãªã«ãã£ãŠãã€ã³ã·ãã³ãåŸã®åæãå¹çåãããŸãã
ãŠãŒã¶ãŒã«è¡šç€ºããããšã©ãŒã¡ãã»ãŒãžã¯ãå éšãã°ãšã³ããªãšã¯å¥ã®åé¡ã§ãããã°ãšã³ããªã«ã¯ã蚺æã«å¿ èŠãªãã¹ãŠã®æ å ±ãå«ãŸããŠããå¿ èŠããããŸãããŠãŒã¶ãŒã«è¡šç€ºãããã¡ãã»ãŒãžã«ã¯ãå®è£ ã®è©³çްãæããã«ãããããªæ å ±ã¯äžåå«ãããäœãèµ·ãã£ãã®ãããŠãŒã¶ãŒãäœããã®å¯Ÿå¿ãåãå¿ èŠãããã®ãââããããŠåé¡ã解決ããªãå Žåã«ã©ãããã°ããã®ãããŠãŒã¶ãŒã«äŒããå¿ èŠããããŸãã
ãœãããŠã§ã¢ãã©ãããã©ãŒã ã¯ããšã©ãŒçºçæã«ãŠãŒã¶ãŒã«ã©ã®ããã«éç¥ãã¹ãã
广çãªãŠãŒã¶ãŒåããšã©ãŒäŒéã¯ã4ã€ã®ååã«åŸããŸãã第äžã«ãã·ã¹ãã ã®å éšæ§é ãåæ ããçšèªã§ã¯ãªãããŠãŒã¶ãŒãçè§£ã§ããçšèªã§åé¡ã説æããŸãããçŸåšããæ¯æããåŠçã§ããŸããã§ãããã¯ãããã©ã³ã¶ã¯ã·ã§ã³ã®ããŒã«ããã¯ïŒæ³šæããŒãã«ã®å¶çŽéåãããã奜ãŸãã衚çŸã§ãã第äºã«ãåé¡ãäžæçãªãã®ãããŠãŒã¶ãŒã«ããæäœãå¿ èŠãªãã®ãã瀺ããŸããäžæçãªãµãŒãã¹åæ¢ã®å Žåã¯ããæ°ååŸã«ããäžåºŠã詊ããã ããããšäŒããŸããæ€èšŒãšã©ãŒã®å Žåã¯ããã«ãŒãçªå·ãæ£ãããã確èªãã ããããšäŒããŸãã第äžã«ãé²è¡äžã®ãã©ã³ã¶ã¯ã·ã§ã³ã«åœ±é¿ãããšã©ãŒã®å Žåã¯ããã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ç¶æ ãæç¢ºã«ç¢ºèªããŸããæ¯æããè¡ãããªãã£ãå Žåã¯ããã®æšãæç¢ºã«äŒããŸããæ³šæãè¡ãããªãã£ãå Žåãããã®æšãæç¢ºã«äŒããŸãããã©ã³ã¶ã¯ã·ã§ã³ã®ç¶æ ãäžæç¢ºã ãšããŠãŒã¶ãŒã®äžä¿¡æã«ã€ãªãããŸãã第åã«ããŠãŒã¶ãŒãèªåã§åé¡ã解決ã§ããªãå Žåã¯ããµããŒããžã®éçã瀺ããŸãã
ãããã®ååãå®è£ ããã«ã¯ããŠãŒã¶ãŒãšæ¥ããå¢çã«ãããšã©ãŒåŠçã³ãŒããããšã©ãŒåé¡ïŒè¡šç€ºããã¡ãã»ãŒãžã®çš®é¡ã決å®ããããïŒããšã©ãŒã³ã³ããã¹ãïŒãŠãŒã¶ãŒãè¡ã£ãŠããæäœã«åãããŠã¡ãã»ãŒãžãå ·äœçã«ããããïŒãããã³ã¢ããªã±ãŒã·ã§ã³å šäœã§äžè²«ããã¡ãã»ãŒãžåœ¢åŒãçæãããã³ãã¬ãŒãã·ã¹ãã ã«ã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸãã
ãã§ã€ã«ã»ãã¥ã¢èšèšïŒã»ãã¥ãªãã£å¶åŸ¡ã«ãšã©ãŒãçºçããå Žåã¯ã¢ã¯ã»ã¹ãæåŠãã
äžé©åãªãšã©ãŒåŠçã«ãã£ãŠåŒãèµ·ããããäžè¬çãªã»ãã¥ãªãã£åé¡ã®1ã€ã«ããã§ã€ã«ãªãŒãã³ã»ãã¥ãªãã£ãã§ãã¯ããããŸãããã¹ãŠã®ã»ãã¥ãªãã£ã¡ã«ããºã ã¯ãæç€ºçã«èš±å¯ããããŸã§ã¢ã¯ã»ã¹ãæåŠããã¹ãã§ãããæåŠããããŸã§ã¢ã¯ã»ã¹ãèš±å¯ãã¹ãã§ã¯ãããŸãããããããã§ã€ã«ãªãŒãã³ãšã©ãŒãçºçããäžè¬çãªåå ã§ããèªèšŒãã§ãã¯ã§äºæããªãäŸå€ãçºçããå Žåãæ£ããåäœã¯ã¢ã¯ã»ã¹ãæåŠããããšã§ããèªå¯ãã§ãã¯ã§ããŒã¿ããŒã¹ãšã©ãŒã«ãããŠãŒã¶ãŒã®æš©éãååŸã§ããªãã£ãå Žåããæ£ããåäœã¯ã¢ã¯ã»ã¹ãæåŠããããšã§ããã¢ã¯ã»ã¹ãæåŠããã¡ã«ããºã ã倱æããã«ãããããããã¢ã¯ã»ã¹ãèš±å¯ããçµæãè¿ãããšã¯ããã§ã€ã«ãªãŒãã³ã®å®çŸ©ã§ãããOWASP 2025ã®A10ã«ããŽãªã§é倧ãªè匱æ§ãã¿ãŒã³ãšããŠæç€ºçã«èšèŒãããŠããŸãã
ã»ãã¥ãªãã£å¶åŸ¡ã«ãããŠãã§ã€ã«ã»ãã¥ã¢ãªãšã©ãŒåŠçãå®è£ ãããšããããšã¯ãäŸå€ãçºçããå Žåã«æã峿 Œãªçµæãããã©ã«ãã§å®è¡ãããšã©ãŒãã³ãã©ã§å¶åŸ¡ãã©ããããããšãæå³ããŸããã€ãŸããã»ãã¥ãªãã£äžéèŠãªã³ã³ããã¹ãã§ãå®è¡ãç¶ç¶ãããŠããŸããããªåçŽãªcatchãããã¯ã決ããŠäœ¿çšããªããšããããšã§ãããããŠãã»ãã¥ãªãã£å¶åŸ¡ã«ããããšã©ãŒãã¹ããæ£åžžãã¹ãšåæ§ã«å³å¯ã«ãã¹ãããããšãæå³ããŸãã
忣ã·ã¹ãã ã«ããããšã©ãŒåŠçèšèšãã¿ãŒã³
ãµãŒããããã¬ãŒã«ãŒãã¿ãŒã³
ãµãŒããããã¬ãŒã«ãŒãã¿ãŒã³ã¯ããããµãŒãã¹ã®é害ãä»ã®ãµãŒãã¹ã«é£éçã«åœ±é¿ãåãŒãã®ãé²ããŸãããµãŒãã¹äŸåé¢ä¿ãå®çŸ©ããããšã©ãŒçã®ãããå€ãè¶ ãããšããµãŒããããã¬ãŒã«ãŒãéãããã®äŸåé¢ä¿ãžã®ãªã¯ãšã¹ãã®è»¢éã忢ããäŸåé¢ä¿ããã®å¿çãåŸ ããã«å³åº§ã«ãšã©ãŒãŸãã¯ãã©ãŒã«ããã¯å¿çãè¿ããŸããèšå®å¯èœãªåŸ æ©æéã®åŸããµãŒããããã¬ãŒã«ãŒã¯åéç¶æ ã«ãªããå°æ°ã®ãããŒããªã¯ãšã¹ããééãããŸãããããã®ãªã¯ãšã¹ããæåããå ŽåããµãŒããããã¬ãŒã«ãŒã¯éããéåžžã®ãã©ãã£ãã¯ãåéãããŸãã倱æããå Žåã¯ããµãŒããããã¬ãŒã«ãŒãåã³éããåŸ æ©æéããªã»ãããããŸãã
ãµãŒããããã¬ãŒã«ãŒããªãå ŽåãäŸåé¢ä¿ã®åŠçãé ãããŸãã¯å©çšã§ããªããšããµãŒãã¹åŽã®ã¹ã¬ãããå¿çåŸ ã¡ã§ãããã¯ãããå¿çãå±ããªãå¯èœæ§ããããŸããã¹ã¬ããããŒã«ãæºæ¯ã«ãªããæ°ãããªã¯ãšã¹ããåŠçã§ããªããªãããµãŒãã¹èªäœãåŒã³åºãå ããå©çšã§ããªããªããŸãããµãŒããããã¬ãŒã«ãŒã¯ãé£éçãªé害ãéå®çãªé害ã«å€æããŸããã€ãŸããäŸåé¢ä¿ã¯å©çšã§ããªããªããŸããããµãŒãã¹åŽã¯åŒãç¶ãåäœãããã®ç¹å®ã®äŸåé¢ä¿ã«äŸåããªããªã¯ãšã¹ããåŠçã§ããŸãã
éå£ãã¿ãŒã³
ãã«ã¯ããããã¿ãŒã³ã¯ãäŸåé¢ä¿ã«åºã¥ããŠãªãœãŒã¹ããŒã«ãåé¢ãããããããããŒã«ã®æ¯æžãããã®äŸåé¢ä¿ã䜿çšããªããªã¯ãšã¹ãã«åœ±é¿ãäžããããšã¯ãããŸããã3ã€ã®å€éšAPIãåŒã³åºããµãŒãã¹ã®å ŽåãåAPIã«ç¬èªã®ã¹ã¬ããããŒã«ãå²ãåœãŠãããšã§ãAPI Aãžã®äœéãªãªã¯ãšã¹ãã倧éã«çºçããŠããAPI Aã®ã¹ã¬ããããŒã«ã®ã¿ãæ¯æžããŸããAPI BãšCãžã®ãªã¯ãšã¹ãã¯ãããããã®ã¹ã¬ããããŒã«ãåé¢ãããŠãããããéåžžã©ããåŠçããç¶ããŸãã
åé¢å¢çã¯ãåé¢ã®éèŠåºŠãšåã¢ãããŒãã«ãã£ãŠçãããªãŒããŒãããã«å¿ããŠãã¹ã¬ããããŒã«ã¬ãã«ãã³ãã¯ã·ã§ã³ããŒã«ã¬ãã«ããŸãã¯ããã»ã¹ã¬ãã«ã®ããããã«é©çšã§ããŸãããããã®å Žåãååã¯åãã§ããã€ãŸããããäŸåé¢ä¿ã®é害ã«ãã£ãŠãä»ã®äŸåé¢ä¿ãå¿ èŠãšãããªãœãŒã¹ãæ¶è²»ãããŠã¯ãªããªããšããããšã§ãã
忣ãã©ã³ã¶ã¯ã·ã§ã³ã®ããã®Sagaãã¿ãŒã³
è€æ°ã®ãµãŒãã¹ã«ãŸãããæ¥åéå¶ãè¡ã忣ã·ã¹ãã ã§ã¯ãããããã®ã¹ãããã§é害ãçºçããå Žåã«ããŒã¿ã®æŽåæ§ãç¶æããã«ã¯ãè£åæŠç¥ãå¿ èŠã§ãããµã¬ãã¿ãŒã³ã¯ãããŒã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ãå®çŸ©ããåãã©ã³ã¶ã¯ã·ã§ã³ã«ã¯ããã®åœ±é¿ãé転ããã察å¿ããè£åãã©ã³ã¶ã¯ã·ã§ã³ããããŸãããµã¬ã®ã¹ãããNã§é害ãçºçããå Žåããµã¬ã¯ã¹ãããN-1ããã¹ããã1ãŸã§ã®è£åãã©ã³ã¶ã¯ã·ã§ã³ãéé ã«å®è¡ããã·ã¹ãã ããµã¬å®è¡åã®ç¶æ ã«åŸ©å ããŸãã
ãµã¬ãã¿ãŒã³ã¯ããŒã¿ããŒã¹ã¬ãã«ã§ã®ã¢ãããã¯æ§ãä¿èšŒãããã®ã§ã¯ãããŸãããããŒã«ããã¯ã§ã¯ãªãè£åã«ãã£ãŠçµææŽåæ§ãå®çŸããŸããã€ãŸããããã¹ãããã®æåãããã®è£åã®å®è¡ãŸã§ã®éãã·ã¹ãã ã¯ããžãã¹ã«ãŒã«ã§æ³å®ãããŠããªãç¶æ ã«ãªãå¯èœæ§ããããšããããšã§ããåã¹ãããã®ãšã©ãŒåŠçã¯ãã®ç¹ãèæ ®ããå¿ èŠããããŸããè£åãã©ã³ã¶ã¯ã·ã§ã³ã¯åªçæ§ãæã€å¿ èŠãããããµã¬ãªãŒã±ã¹ãã¬ãŒã¿ãŒã¯é害ãçºçããŠãåŠçãç¶ç¶ããæåŸã«æŽåæ§ã®åããç¶æ ããåéã§ããããã«èšèšããå¿ èŠããããŸãã
å®å šã§ãªãåºååŠçãé²ãæ¹æ³
ãšã©ãŒã¡ãã»ãŒãžã«ãããå®å šã§ãªãåºååŠçã¯ãWebã¢ããªã±ãŒã·ã§ã³ã«ãããŠæãé »ç¹ã«æªçšãããè匱æ§ã®äžã€ã§ããæ»æãã¿ãŒã³ã¯åçŽæå¿«ã§ããäžæ£ãªå ¥åãäºæããªãããŒã¿åããŸãã¯äŸå€ãã¹ãããªã¬ãŒããå¢çå€ãéä¿¡ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã«ãšã©ãŒãçæãããŸãããšã©ãŒã¡ãã»ãŒãžãŸãã¯HTTPã¬ã¹ãã³ã¹ããã£ãèªã¿åããæããã«ãªã£ãå®è£ ã®è©³çŽ°ãæœåºããŸãããããŠããã®è©³çްãå©çšããŠæ»æãæŽç·ŽãããŸãã
å®å šã§ãªãåºååŠçã鲿¢ããã«ã¯ã以äžã®ããšãå¿ èŠã§ãã
ãŠãŒã¶ãŒåãã®å¿çã«ã¯ãå éšäŸå€ã®è©³çŽ°ãæ±ºããŠå«ããªãã§ãã ããã ãŠãŒã¶ãŒãåãåãHTTPã¬ã¹ãã³ã¹ããã£ãJSONãšã©ãŒãªããžã§ã¯ããããã³HTMLãšã©ãŒããŒãžã«ã¯ããŠãŒã¶ãŒã«é©ããã¡ãã»ãŒãžãšãå¿ èŠã«å¿ããŠãµããŒãæ åœè ãå éšãã°ãšã³ããªãæ€çŽ¢ããããã«äœ¿çšã§ãããšã©ãŒåç §ã³ãŒããå«ããå¿ èŠããããŸããã¹ã¿ãã¯ãã¬ãŒã¹ãSQLã¹ããŒãã¡ã³ãããã¡ã€ã«ãã¹ãã¯ã©ã¹åããŸãã¯ãã¬ãŒã ã¯ãŒã¯ããŒãžã§ã³ã¯æ±ºããŠå«ããŠã¯ãããŸããã
ãšã©ãŒåŠçã³ãŒãããã¹ãæžã¿ã§ããããšãæ€èšŒããã ãšã©ãŒæ¡ä»¶ã«å¯Ÿããåäœãã¹ãã§ã¯ããšã©ãŒã¬ã¹ãã³ã¹ã«å«ãŸããå 容ã ãã§ãªããå«ãŸããŠããªãå 容ã«ã€ããŠãæ€èšŒããå¿ èŠããããŸããã¬ã¹ãã³ã¹ã¹ããŒã¿ã¹ã500ã§ããããšã確èªããã ãã§ãã¬ã¹ãã³ã¹ããã£ã«ã¹ã¿ãã¯ãã¬ãŒã¹ãå«ãŸããŠããªãããšãæ€èšŒããªããã¹ãã¯ããã®è匱æ§ã«å¯Ÿããäžå®å šãªãã¹ãã§ãã
æ§é åããããšã©ãŒå¿çãã©ãŒããããäžè²«ããŠäœ¿çšããŠãã ããã ãã¹ãŠã®ãšã³ããã€ã³ãã«çµ±äžçã«é©çšãããæšæºåããããšã©ãŒå¿çã¹ããŒãã䜿çšããããšã§ãè¿ãããæ å ±ã®ç£æ»ã容æã«ãªããå éšæ å ±ãæŒæŽ©ããªãããã«åŸ¹åºãããããªããŸããäžæ¹ãå Žåœããçãªãšã©ãŒå¿çãã©ãŒãããã¯ãäžæŽåãæå³ããªãæ å ±æŒæŽ©ã®åå ãšãªããŸãã
蚺æã®è©³çްããã¹ãŠå éšçã«èšé²ããã ãŠãŒã¶ãŒãžã®å¿çã«å«ããã¹ãã§ã¯ãªãèšºææ å ±ã¯ããšã³ãžãã¢ãªã³ã°ããŒã ãã¢ã¯ã»ã¹ã§ããå Žæã«èšé²ããå¿ èŠããããŸããæ§é åããããã£ãŒã«ããšé©åãªã¢ã¯ã»ã¹å¶åŸ¡ãåãããã°ã·ã¹ãã ãé©åãªä¿åå ã§ãããã°èšé²ã®åŒã³åºããšãŠãŒã¶ãŒãžã®å¿ççæã¯ããšã©ãŒåŠçã³ãŒãå ã§æç¢ºã«åé¢ãããæäœãšããŠæ±ããå ±éã®ã¡ãã»ãŒãžæååãå ±æããŠã¯ãããŸããã
蚺æãã°ãšãŠãŒã¶ãŒåãã¬ã¹ãã³ã¹ã®åé¢ã瀺ãå ·äœçãªJavaã®äŸïŒ
ãžã£ã¯
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleUnexpectedError(
Exception ex, HttpServletRequest request) {
// Full diagnostic context logged internally; never sent to the user
String errorId = UUID.randomUUID().toString();
log.error("Unhandled exception [errorId={}] [path={}] [userId={}]",
errorId,
request.getRequestURI(),
getCurrentUserId(),
ex); // full stack trace captured in the log entry
// User-facing response: error ID for support lookup, no internal details
ErrorResponse response = new ErrorResponse(
"An unexpected error occurred. Reference: " + errorId,
Instant.now()
);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
}
ãã®ãã¿ãŒã³ã«ãããã¹ã¿ãã¯ãã¬ãŒã¹ãäŸå€ã¯ã©ã¹ãããã³ãã¹ãŠã®å éšã³ã³ããã¹ãããã°ã«èšé²ãããäžæ¹ã§ããŠãŒã¶ãŒã«ã¯ãµããŒãæ åœè ã察å¿ãããã°ãšã³ããªãååŸããããã«äœ¿çšã§ããåç §ã³ãŒãã®ã¿ãæäŸãããŸãã
ãšã©ãŒåŠçã®æ¬ é¥ãæ€åºããããã®éçã³ãŒãåæ
æ¬çªç°å¢ã§ã€ã³ã·ãã³ããåŒãèµ·ããå¯èœæ§ãæãé«ããšã©ãŒåŠçã®æ¬ é¥ã¯ãã³ãŒãã¬ãã¥ãŒæ åœè ãèŠã€ãããããªæçœãªãã®ã§ã¯ãããŸããããããã¯ãã³ãŒãããŒã¹ãæ¡å€§ããã«ã€ããŠéãã«èç©ãããŠããæ§é çãªãã¿ãŒã³ã§ããäŸãã°ãäŸå€ããã°ã«èšé²ããã«ç¡èŠãã空㮠catch ãããã¯ãå ã®äŸå€ãç Žæ£ããªããæ±çšçãªã¡ãã»ãŒãžããã°ã«èšé²ãã catch ãããã¯ãåŒã³åºãå ããã§ãã¯ããªããšã©ãŒæ»ãå€ãã»ãã¥ãªãã£äžéèŠãªã³ãŒããã¹ã§å€±æããŠãå®è¡ãç¶ç¶ãããäŸå€ãã³ãã©ãªã©ãæããããŸãããããã®ãã¿ãŒã³ã¯ãã¬ãã¥ãŒæ åœè ãæèçã«æ¢ããªãéãèŠãããå€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ããã¹ãŠã® catch ãããã¯ãã¬ãã¥ãŒããããšã¯çŸå®çã§ã¯ãããŸããã
éçã³ãŒãè§£æããŒã«ã¯ããã®åé¡ã«äœç³»çã«å¯ŸåŠããŸããã³ãŒããå®è¡ããããšãªãããœãŒã¹ã³ãŒããæœè±¡æ§ææšã«è§£æãããã®æ§é ããäžé©åãªãšã©ãŒåŠçã«é¢é£ãããã¿ãŒã³ãæ€åºããŸããSonarQubeãªã©ã®ããŒã«ã¯ã空ã®catchãããã¯ãã¹ã¿ãã¯ãã¬ãŒã¹ã®é²åºãæ€èšŒã®æ¬ èœãªã©ããœãŒã¹ã³ãŒãå ã®å®å šã§ãªãããŸãã¯ä¿¡é Œæ§ã®äœããšã©ãŒåŠçãã¿ãŒã³ãæ€åºããŸãããã®è§£æã¯ãæè¿å€æŽããããã¡ã€ã«ãæè¿ã€ã³ã·ãã³ããåŒãèµ·ãããã¢ãžã¥ãŒã«ã ãã§ãªããã³ãŒãããŒã¹å šäœãäžåºŠã®åŠçã§ã«ããŒããŸãã
è€æ°ã®èšèªãæ··åšãããšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã®å Žåãåæã¯ç°å¢ã«ååšãããã¹ãŠã®èšèªãç¶²çŸ ããå¿ èŠããããŸãããšã©ãŒãæ£ããåŠçããJavaãµãŒãã¹ã§ãã£ãŠããã¡ã€ã³ãã¬ãŒã å±€ãããšã©ãŒãäŒæããªãã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠCOBOLããã°ã©ã ãåŒã³åºãå ŽåãJavaã®ã¿ã®éçåæã§ã¯æ€åºã§ããªããšã©ãŒåŠçã®ã®ã£ãããååšããŸãã èšèªã暪æãããšã³ã¿ãŒãã©ã€ãºéçã³ãŒãåæã·ã¹ãã å ã®ãã¹ãŠã®èšèªãç¶²çŸ ããçµ±äžçãªåæã¯ããã¡ã€ã«ã¬ãã«ã§ã¯ãªãã·ã¹ãã ã¬ãã«ã§ãšã©ãŒåŠçã®æ¬ é¥ãèŠã€ããããã®æè¡çãªåææ¡ä»¶ã§ãã
ã¬ã¬ã·ãŒã·ã¹ãã ã®å Žåããšã©ãŒåŠçã®è² åµã¯éåžžãã³ãŒãããŒã¹ã®æãå€ãéšåã«éäžããŠãããããã§ã¯ãšã©ãŒåŠçã®æ £ç¿ãçŸä»£ã®æ £è¡ãæšæºåãããåã«ç¢ºç«ãããŠããŸãã æ¢åã·ã¹ãã ã®è¿ä»£åãšãšã©ãŒåŠçæ£åšçã§äžè²«æ§ã®ãªããšã©ãŒåŠçãããäžå åãããæšæºåãããã¢ãããŒããžã®ç§»è¡ã¯ã倿Žãå ããåã«çŸç¶ãç¹å®ã§ããèªååããŒã«ã掻çšããããšã§ã¡ãªãããåŸãããè¿ä»£åã¿ã¹ã¯ã§ãã
èªå®æ¡ä»¶ SMART TS XL ã·ã¹ãã èŠæš¡ã§ã®ãšã©ãŒåŠçã«å¯Ÿå¿
SMART TS XL ãã®ããŒã«ã¯ãCOBOLãJCLãJavaã.NETãPythonãJavaScriptãTypeScriptãSQLãªã©ãããããèšèªãšãã©ãããã©ãŒã ã®ãœãŒã¹ã³ãŒããåã蟌ã¿ããœãããŠã§ã¢ç°å¢å šäœã®çµ±äžãããçžäºåç §ã¢ãã«ãæ§ç¯ãããã¹ãŠã®ã³ã³ããŒãã³ãéã®é¢ä¿ãè¡šãæ§é ã€ã³ããã¯ã¹ãäœæããŸãããšã©ãŒåŠçåæã«ãããŠã¯ããã®ã¢ãã«ã¯åäžèšèªããŒã«ã§ã¯è§£æ±ºã§ããªãçåã«çããŸããäŸãã°ãCOBOLããã°ã©ã ã®ã©ã®é¢æ°ãåŒã³åºãå ã«ãšã©ãŒãäŒæããããããããã®é¢æ°ã®ã©ã®åŒã³åºãå ãäŒæããããšã©ãŒãåŠçãããããããŠåŒã³åºããã§ãŒã³ã§ãšã©ãŒåŠçãè¡ããã«ã·ã¹ãã å ã®ã©ã®ãã¹ããŠãŒã¶ãŒåãã®åºåã«å°éã§ãããããšãã£ãçåã§ãã
ãã©ãããã©ãŒã ã®åœ±é¿åææ©èœã¯ãããã倿Žè©äŸ¡ã«ãŸã§æ¡åŒµããŸããå ±æã³ã³ããŒãã³ãã®ãšã©ãŒåŠçåäœã倿Žããåã«ã圱é¿åæã«ãã£ãŠãçŸåšã®åäœã«äŸåããã·ã¹ãã å ã®ä»ã®ãã¹ãŠã®ã³ã³ããŒãã³ããç¹å®ãããããã倿Žã段éçã«å®è¡ããŠæ€èšŒããããšãã§ããäžæµãžã®åœ±é¿ãäžæãªãŸãŸå±éãããããšã¯ãããŸãããããã¯ã 圱é¿åæãœãªã¥ãŒã·ã§ã³ ããã¯ãIN-COMããšã³ã¿ãŒãã©ã€ãºç°å¢åãã«æäŸããæ©èœã§ãããç¹ã«ãšã©ãŒåŠçããžãã¯ã®å€æŽãã©ã®ãããªåœ±é¿ãäžããããã倿Žåã«çè§£ãããšããåé¡ã«é©çšãããŸãã
SMART TS XLã®ãšã³ã¿ãŒãã©ã€ãºæ€çŽ¢æ©èœã«ãããåæã容æã«ãªããŸããã·ã¹ãã å ã§äŸå€ããã£ããããŠããã°ã«èšé²ããªããã¹ãŠã®é¢æ°ãæ€çŽ¢ãããšãç¹å®ã®ãã¡ã€ã«ãã¹ãšé¢æ°åãè¿ãããèšèªå¥ãããã³åŒã³åºãå ã颿°ã«å°éããåæ°ã«åºã¥ãã®ã£ããã®æ·±å»åºŠå¥ã«æŽçãããŸãããã®åªå é äœä»ãã«ããããšã©ãŒåŠçã®è² åµã®æ¯æ£ããå§åãããããšãªãå®è¡å¯èœãªãã®ã«ãªããŸãã
ã·ã¹ãã ã¬ãã«ã®ç¹æ§ãšããŠã®ãšã©ãŒåŠç
广çãªãšã©ãŒåŠçã¯ãåã ã®ã¢ãžã¥ãŒã«ãåç¬ã§æã€ç¹æ§ã§ã¯ãããŸãããããšãã¢ãžã¥ãŒã«èªèº«ã®ãšã©ãŒåŠçãæ£ããè¡ãããŠããŠããéäžãã°æ©èœããªããå€éšäŸåé¢ä¿ã«å¯ŸãããµãŒããããã¬ãŒã«ãŒããªããè€æ°ã¹ãããã®æžãèŸŒã¿æäœã«ã¢ãããã¯ãªãã©ã³ã¶ã¯ã·ã§ã³èšèšãæ¡çšãããŠããªãã·ã¹ãã å ã§åäœããå Žåã蚺æãå°é£ãªæ¬çªç°å¢ã§ã®ã€ã³ã·ãã³ããçºçããå¯èœæ§ããããŸããã¢ãžã¥ãŒã«ã¬ãã«ã®æ£ç¢ºæ§ã¯å¿ èŠæ¡ä»¶ã§ã¯ãããŸãããå忡件ã§ã¯ãããŸããã
ã¢ããªã±ãŒã·ã§ã³å šäœã§ãšã©ãŒåŠçã广çã«ããã·ã¹ãã ã¬ãã«ã®ç¹æ§ã¯æ¬¡ã®ãšããã§ããå埩å¯èœãªç¶æ ãšå埩äžå¯èœãªç¶æ ãåã¬ã€ã€ãŒã§ç°ãªãããã«ãäžè²«ãããšã©ãŒåé¡ãè¡ãããšããã¹ãŠã®ãšã©ãŒã€ãã³ããæšæºåãããã¡ã¿ããŒã¿ãæã€åäžã®ã¯ãšãªå¯èœãªã·ã¹ãã ã«èšé²ãããããã«ãéäžãã°èšé²ãè¡ãããšã1 ã€ã®äŸåé¢ä¿ã®é害ã«ãã£ãŠä»ã®äŸåé¢ä¿ã«å¿ èŠãªãªãœãŒã¹ãæ¯æžããªãããã«ããã¹ãŠã®å€éšäŸåé¢ä¿ã«ãµãŒããããã¬ãŒã«ãŒãèšããããšãéšåçãªå®äºã«ãã£ãŠççŸããç¶æ ãçºçããªãããã«ããã¹ãŠã®ãã«ãã¹ãããæžã蟌ã¿ã«å¯ŸããŠã¢ãããã¯ãªãã©ã³ã¶ã¯ã·ã§ã³èšèšãæ¡çšããããšãã¢ã¯ã»ã¹å¶åŸ¡ãã§ãã¯ã®ãšã©ãŒã«ãã£ãŠã¢ã¯ã»ã¹ãèš±å¯ãããã®ã§ã¯ãªãæåŠãããããã«ããã¹ãŠã®ã»ãã¥ãªãã£ã«ææãªã³ãŒããã¹ã«ãã§ã€ã«ã»ãã¥ã¢ãªããã©ã«ããèšå®ããããšã
çŸåšãããã®ç¹æ§ãåããŠããªãã·ã¹ãã ã«ããããçµã¿èŸŒãã«ã¯ãäžåºŠã®ãªãã¡ã¯ã¿ãªã³ã°ã§ã¯ãªããæ®µéçãªäœæ¥ãå¿ èŠã§ããçŸå®çãªã¢ãããŒããšããŠã¯ãéçè§£æã«ãã£ãŠçŸç¶ã®ã®ã£ãããç¹å®ããå®å®æ§ãšã»ãã¥ãªãã£ãžã®æœåšçãªåœ±é¿ã«åºã¥ããŠãããã®ã®ã£ããã«åªå é äœãä»ãããªã¹ã¯ã®é«ããã¿ãŒã³ããé ã«æ®µéçã«ä¿®æ£ããŠããããšã§ããæçµçãªç®æšã¯ããã¿ãŒã³ãæšæºåããããã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠåŒ·å¶ãããCIãã€ãã©ã€ã³ã«ãã£ãŠæ°ããã³ãŒããããŒã ãæé€ããããšã«åæããã¢ã³ããã¿ãŒã³ãå°å ¥ããŠããªãããšãæ€èšŒãããããããšã³ãžãã¢ãæ°ããæ©èœãäœæãããã³ã«ãšã©ãŒåŠçã«ã€ããŠèããå¿ èŠã®ãªãã·ã¹ãã ãå®çŸããããšã§ãã