ããã³ããšã³ãã®è³æ Œæ å ±ç®¡çãé床ãšã»ãã¥ãªãã£ã®ããã«æé©åããŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããèªèšŒã®é å»¶ãåæžããŸãã
ããã³ããšã³ãè³æ Œæ å ±ç®¡çã®ããã©ãŒãã³ã¹ïŒèªèšŒåŠçé床
仿¥ã®ããŒã¹ã®éãããžã¿ã«ç°å¢ã«ãããŠããŠãŒã¶ãŒã¯ã·ãŒã ã¬ã¹ã§å¹ççãªãªã³ã©ã€ã³äœéšãæåŸ ããŠããŸãããã®äœéšã®éèŠãªåŽé¢ã®äžã€ãèªèšŒãã€ãŸããŠãŒã¶ãŒã®èº«å ã確èªããããã»ã¹ã§ããé ããŠä¿¡é Œæ§ã®äœãèªèšŒã¯ããŠãŒã¶ãŒã®äžæºããã©ã³ã¶ã¯ã·ã§ã³ã®æŸæ£ã«ã€ãªãããæçµçã«ã¯ããžãã¹ã«æªåœ±é¿ãåãŒããŸãããã®èšäºã§ã¯ãããã³ããšã³ãã®è³æ Œæ å ±ç®¡çã®ããã©ãŒãã³ã¹ã®è€éãã«æ·±ãå ¥ã蟌ã¿ãç¹ã«èªèšŒåŠçé床ã«çŠç¹ãåœãŠãŸããã¹ã ãŒãºã§å®å šãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã®èªèšŒã¯ãŒã¯ãããŒãæé©åããããã®èª²é¡ããã¹ããã©ã¯ãã£ã¹ãããã³ãã¯ããã¯ãæ¢ããŸãã
課é¡ã®çè§£
ããã³ããšã³ãã§ã®èªèšŒåŠçãé ããªãèŠå ã¯ããã€ããããŸãïŒ
- ãããã¯ãŒã¯é å»¶ïŒ ãŠãŒã¶ãŒã®ããã€ã¹ãšèªèšŒãµãŒããŒéã®è·é¢ã¯éèŠãªåœ¹å²ãæãããŸããå°ççãªå Žæãã€ã³ã¿ãŒãããæ¥ç¶ããããã¯ãŒã¯ã®æ··éã¯ãã¹ãŠå¿çæéã«åœ±é¿ãäžããå¯èœæ§ããããŸããäŸãã°ãæ±äº¬ã®ãŠãŒã¶ãŒããã¥ãŒãšãŒã¯ã®ãµãŒããŒã«ã¢ã¯ã»ã¹ããå Žåããã¥ãŒãšãŒã¯ã®ãŠãŒã¶ãŒãšæ¯èŒããŠé«ãé å»¶ãçºçããå¯èœæ§ãé«ãã§ãã
- èšç®ãªãŒããŒãããïŒ ããã·ã¥åãæå·åãªã©ã®æå·æäœã¯ãèšç®è² è·ãé«ãã§ãããããã®æäœãããã³ããšã³ãã§å®è¡ãããšãç¹ã«åŠçèœåãéãããŠããã¢ãã€ã«ããã€ã¹ã§ã¯ããŠãŒã¶ãŒã®ããã€ã¹ã«è² æ ããããå¯èœæ§ããããŸããããã«ãæé©åãããŠããªãJavaScriptã³ãŒãã¯ãã®åé¡ãæªåãããå¯èœæ§ããããŸãã
- ãã©ãŠã¶ã®å¶éïŒ ãã©ãŠã¶ããšã«ããã©ãŒãã³ã¹ã®ã¬ãã«ãææ°ã®Webæè¡ãžã®å¯Ÿå¿ãç°ãªããŸããJavaScriptã®å®è¡é床ãAPIãµããŒãã®äžäžèŽã¯ããã©ãããã©ãŒã ããšã«äºæž¬äžå¯èœãªèªèšŒããã©ãŒãã³ã¹ã«ã€ãªããå¯èœæ§ããããŸãã髿§èœãªãã¹ã¯ãããäžã®Chromeãšå€ãiPhoneäžã®Safariã®éããèããŠã¿ãŠãã ããã
- ãµãŒãããŒãã£ã©ã€ãã©ãªïŒ å€éšã®èªèšŒã©ã€ãã©ãªã«äŸåãããšãäŸåé¢ä¿ããªãŒããŒããããçºçããå¯èœæ§ããããŸãããããã®ã©ã€ãã©ãªã®ãµã€ãºãšè€éãã¯ãããŒãžã®èªã¿èŸŒã¿æéãå šäœçãªèªèšŒããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã軜éã§ååã«æé©åãããã©ã€ãã©ãªãéžæããããšãéèŠã§ãã
- ç¶æ 管çïŒ ããã³ããšã³ãã§ã®èªèšŒç¶æ ãéå¹ççã«ç®¡çãããšãäžèŠãªåèªèšŒãªã¯ãšã¹ããåŠçæéã®å¢å ã«ã€ãªããå¯èœæ§ããããŸããäŸãã°ãããŒãžèªã¿èŸŒã¿ããšã«ãŠãŒã¶ãŒãèªèšŒãããŠããããç¹°ãè¿ããã§ãã¯ããããšã¯ãé©åãªãã£ãã·ã¥ãšã»ãã·ã§ã³ç®¡çã§åé¿ã§ããŸãã
- å€èŠçŽ èªèšŒïŒMFAïŒïŒ ã»ãã¥ãªãã£ã匷åããäžæ¹ã§ãMFAã¯èªèšŒããã»ã¹ã«è¿œå ã®ã¹ããããå ããå¯èœæ§ããããŸããé¢äžããèŠçŽ ïŒäŸïŒSMSã³ãŒããèªèšŒã¢ããªãçäœèªèšŒïŒãå€ãã»ã©ãèªèšŒãããŒã¯é·ããªããŸããåMFAã¹ããããæé©åããããšãäžå¯æ¬ ã§ãã
äž»èŠãªããã©ãŒãã³ã¹ææš
æé©åææ³ã«é£ã³èŸŒãåã«ãèªèšŒããã©ãŒãã³ã¹ã枬å®ããããã«äœ¿çšããææšãå®çŸ©ããããšãéèŠã§ãïŒ
- Time to First Byte (TTFB)ïŒ ãã©ãŠã¶ããµãŒããŒããæåã®ããŒã¿ãã€ããåä¿¡ãããŸã§ã«ãããæéãæž¬å®ããŸããTTFBãé«ãå Žåã¯ããããã¯ãŒã¯é å»¶ãŸãã¯ãµãŒããŒãµã€ãã®ããã©ãŒãã³ã¹åé¡ã瀺ããŸãã
- èªèšŒåŠçæéïŒ ãŠãŒã¶ãŒãè³æ Œæ å ±ãéä¿¡ããç¬éããæ£åžžã«èªèšŒããããŸã§ã®ãããã³ããšã³ãã§ã®èªèšŒããã»ã¹å®äºã«ãããæéãæž¬å®ããŸãã
- ããŒãžèªã¿èŸŒã¿æéïŒ èªèšŒã«è²»ããããæéãå«ããããŒãžãå®å šã«èªã¿èŸŒãŸãããŸã§ã®åèšæéãæž¬å®ããŸãã
- ãšã©ãŒçïŒ å€±æããèªèšŒè©Šè¡ã®å²åãæž¬å®ããŸãããšã©ãŒçãé«ãå Žåã¯ãèªèšŒã·ã¹ãã ã«æ ¹æ¬çãªåé¡ãããããšã瀺ããŠããå¯èœæ§ããããŸãã
- ãŠãŒã¶ãŒæºè¶³åºŠïŒ çŽæ¥æž¬å®ããããšã¯ã§ããŸãããããŠãŒã¶ãŒæºè¶³åºŠã¯èª¿æ»ããã£ãŒãããã¯ãéããŠæž¬ãããšãã§ããŸããé ããŠä¿¡é Œæ§ã®äœãèªèšŒã¯ããŠãŒã¶ãŒæºè¶³åºŠã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
æé©åæŠç¥
ããã³ããšã³ãã®è³æ Œæ å ±ç®¡çã®ããã©ãŒãã³ã¹ãæé©åããèªèšŒåŠçé床ãåäžãããããã®ããã€ãã®æŠç¥ã以äžã«ç€ºããŸãïŒ
1. ãããã¯ãŒã¯é å»¶ãæå°éã«æãã
ãããã¯ãŒã¯é å»¶ãæžããããšã¯ãå šäœçãªèªèšŒããã©ãŒãã³ã¹ãåäžãããããã«äžå¯æ¬ ã§ãã以äžã®ææ³ãæ€èšããŠãã ããïŒ
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒïŒ CDNã䜿çšããŠãJavaScriptã©ã€ãã©ãªãç»åãªã©ã®éçã¢ã»ããããŠãŒã¶ãŒã®è¿ãã«ãã£ãã·ã¥ããŸããããã«ãããããŒã¿ãç§»åããå¿ èŠã®ããè·é¢ãççž®ãããèªã¿èŸŒã¿æéãççž®ãããŸããäžè¬çãªCDNã«ã¯ãCloudflareãAkamaiãAmazon CloudFrontãªã©ããããŸãã
- å°ççãªãµãŒããŒé çœ®ïŒ èªèšŒãµãŒããŒãè€æ°ã®å°ççãªãŒãžã§ã³ã«å±éããŠãäžçäžã®ãŠãŒã¶ãŒã®é å»¶ãæå°éã«æããŸããäŸãã°ãåç±³ããšãŒããããã¢ãžã¢ã«ãŠãŒã¶ãŒãæã€äŒæ¥ã¯ãåãªãŒãžã§ã³ã«ãµãŒããŒãå±éãããããããŸããã
- DNSè§£æ±ºã®æé©åïŒ DNSã¬ã³ãŒããæ£ããèšå®ãããŠãããDNSãããã€ããŒãå¿çæ§ãããããšã確èªããŸããé ãDNS解決ã¯ãèªèšŒãªã¯ãšã¹ãã«å€§ããªãªãŒããŒãããã远å ããå¯èœæ§ããããŸãã
- ã³ãã¯ã·ã§ã³ããŒãªã³ã°ïŒ ã³ãã¯ã·ã§ã³ããŒãªã³ã°ã䜿çšããŠæ¢åã®ãããã¯ãŒã¯æ¥ç¶ãåå©çšããåèªèšŒãªã¯ãšã¹ãããšã«æ°ããæ¥ç¶ã確ç«ãããªãŒããŒããããåæžããŸãã
2. èšç®ã¿ã¹ã¯ãããã¯ãšã³ãã«ãªãããŒããã
èšç®è² è·ã®é«ãæäœãããã¯ãšã³ããµãŒããŒã«ãªãããŒãããããšã§ãããã³ããšã³ãã§ã®æäœãæå°éã«æããŸããããã«ããããŠãŒã¶ãŒã®ããã€ã¹ãžã®è² æ ã軜æžãããå šäœçãªããã©ãŒãã³ã¹ãåäžããŸããäŸãšããŠã¯æ¬¡ã®ãã®ããããŸãïŒ
- ãã¹ã¯ãŒãã®ããã·ã¥åïŒ ããã³ããšã³ãã§ãã¹ã¯ãŒããããã·ã¥åããªãã§ãã ãããåžžã«bcryptãArgon2ãªã©ã®åŒ·åãªããã·ã¥ã¢ã«ãŽãªãºã ã䜿çšããŠãããã¯ãšã³ããµãŒããŒã§ãã¹ã¯ãŒãã®ããã·ã¥åãå®è¡ããŸããããã«ãããããã³ããšã³ãã®ã³ãŒããååãããå Žåã«ãŠãŒã¶ãŒã®è³æ Œæ å ±ãæŒæŽ©ããã®ãé²ããŸãã
- ããŒã¯ã³ã®çæïŒ ããã¯ãšã³ããµãŒããŒã§èªèšŒããŒã¯ã³ïŒäŸïŒJSON Web Tokens - JWTïŒãçæããŸãããµãŒããŒã¯å®å šãªããŒã«ã¢ã¯ã»ã¹ã§ããããå¹ççã«ããŒã¯ã³ãçæã§ããŸãã
- ããŒã¿ã®æå·å/埩å·åïŒ æ©å¯ããŒã¿ãæå·åãŸãã¯åŸ©å·åããå¿ èŠãããå Žåã¯ããããã®æäœãããã¯ãšã³ããµãŒããŒã§å®è¡ããŸãã
3. JavaScriptã³ãŒããæé©åãã
å¹ççãªJavaScriptã³ãŒãã¯ãé«éãªèªèšŒåŠçã«äžå¯æ¬ ã§ãã以äžã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããïŒ
- æå°åãšãã³ãã«ïŒ JavaScriptã³ãŒããæå°åãããã³ãã«ããŠããã®ãµã€ãºãšHTTPãªã¯ãšã¹ãã®æ°ãæžãããŸããWebpackãParcelãRollupãªã©ã®ããŒã«ã§ãã®ããã»ã¹ãèªååã§ããŸãã
- ã³ãŒãåå²ïŒ JavaScriptã³ãŒããå°ããªãã£ã³ã¯ã«åå²ãããªã³ããã³ãã§èªã¿èŸŒããããã«ããŸããããã«ãããåæèªã¿èŸŒã¿æéãççž®ãããå šäœçãªããã©ãŒãã³ã¹ãåäžããŸãã
- é å»¶èªã¿èŸŒã¿ïŒ éèŠã§ãªãJavaScriptã³ãŒããé å»¶èªã¿èŸŒã¿ããŠãåæããŒãžã®èªã¿èŸŒã¿æéãæ¹åããŸãã
- ããããã³ã°æäœã®åé¿ïŒ åæXHRãªã¯ãšã¹ããªã©ããã©ãŠã¶ãããªãŒãºãããå¯èœæ§ã®ããããããã³ã°æäœã®äœ¿çšãé¿ããŸãã代ããã«éåææäœãšã³ãŒã«ããã¯ã䜿çšããŸãã
- å¹ççãªã¢ã«ãŽãªãºã ã®äœ¿çšïŒ ããŒã¿åŠçãšæäœã«ã¯å¹ççãªã¢ã«ãŽãªãºã ãéžæããŸããéå¹çãªã«ãŒããè€éãªããŒã¿æ§é ã®äœ¿çšãé¿ããŸãã
- ã³ãŒãã®ãããã¡ã€ãªã³ã°ïŒ ãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠJavaScriptã³ãŒãããããã¡ã€ãªã³ã°ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
4. 軜éã©ã€ãã©ãªãéžæãã
ãµãŒãããŒãã£ã®èªèšŒã©ã€ãã©ãªã䜿çšããå Žåã¯ã軜éã§ååã«æé©åããããªãã·ã§ã³ãéžæããŸããè¥å€§åããŠããããŸãã¯äžèŠãªäŸåé¢ä¿ãããã©ã€ãã©ãªã¯é¿ããŠãã ããã以äžãèæ ®ããŠãã ããïŒ
- ã©ã€ãã©ãªãµã€ãºã®è©äŸ¡ïŒ 䜿çšããåã«ã©ã€ãã©ãªã®ãµã€ãºã確èªããŸããéåžžãå°ããã©ã€ãã©ãªã®æ¹ãèªã¿èŸŒã¿æéãçããããã©ãŒãã³ã¹ãåäžããŸãã
- äŸåé¢ä¿ã®ç¢ºèªïŒ ã©ã€ãã©ãªã®äŸåé¢ä¿ã«æ³šæããŠãã ãããäŸåé¢ä¿ã®æ°ãå€ãã©ã€ãã©ãªã¯ãå šäœçãªãªãŒããŒããããå¢å ãããå¯èœæ§ããããããé¿ããŠãã ããã
- ã¬ãã¥ãŒãšè©äŸ¡ã®ç¢ºèªïŒ ä»ã®éçºè ããã®ã¬ãã¥ãŒãè©äŸ¡ãèªãã§ãã©ã€ãã©ãªã®ããã©ãŒãã³ã¹ãšä¿¡é Œæ§ãè©äŸ¡ããŸãã
- ãã€ãã£ãAPIã®æ€èšïŒ å Žåã«ãã£ãŠã¯ããã€ãã£ãã®ãã©ãŠã¶APIã䜿çšããããšã§ããµãŒãããŒãã£ã®ã©ã€ãã©ãªãäžå䜿çšããªãããšãå¯èœã§ããäŸãã°ãWeb Authentication APIïŒWebAuthnïŒã¯ãããŒããŠã§ã¢ã»ãã¥ãªãã£ããŒãçäœèªèšŒã䜿çšããŠãŠãŒã¶ãŒãèªèšŒããããã®å®å šã§æšæºåãããæ¹æ³ãæäŸããŸãã
5. ãã£ãã·ã¥æŠç¥ãå®è£ ãã
ãã£ãã·ã¥ã¯ããµãŒããŒããããŒã¿ãç¹°ãè¿ãååŸããå¿ èŠæ§ãæžããããšã§ãèªèšŒããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãã以äžã®ãã£ãã·ã¥æŠç¥ãæ€èšããŠãã ããïŒ
- ãã©ãŠã¶ãã£ãã·ã¥ïŒ ãã©ãŠã¶ãã£ãã·ã¥ã䜿çšããŠãJavaScriptãã¡ã€ã«ãç»åãªã©ã®éçã¢ã»ããããã£ãã·ã¥ããŸãããµãŒããŒã§é©åãªãã£ãã·ã¥ããããŒãèšå®ããŸãã
- ããŒã«ã«ã¹ãã¬ãŒãž/ã»ãã·ã§ã³ã¹ãã¬ãŒãžïŒ ããŒã«ã«ã¹ãã¬ãŒãžãŸãã¯ã»ãã·ã§ã³ã¹ãã¬ãŒãžã䜿çšããŠãèªèšŒããŒã¯ã³ããŠãŒã¶ãŒããŒã¿ãããã³ããšã³ãã«ãã£ãã·ã¥ããŸããããã«ããããµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããããšãªãããŠãŒã¶ãŒã®èªèšŒç¶æ ãè¿ éã«ååŸã§ããŸãã
- ã€ã³ã¡ã¢ãªãã£ãã·ã¥ïŒ ã€ã³ã¡ã¢ãªãã£ãã·ã¥ã䜿çšããŠãé »ç¹ã«ã¢ã¯ã»ã¹ãããããŒã¿ãã¡ã¢ãªã«ä¿åããŸããããã«ãããããŒã«ã«ã¹ãã¬ãŒãžãã»ãã·ã§ã³ã¹ãã¬ãŒãžããããŒã¿ãååŸãããããé«éãªã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã`lru-cache`ã®ãããªã©ã€ãã©ãªã圹ç«ã¡ãŸãã
- ãµãŒãã¹ã¯ãŒã«ãŒïŒ ãµãŒãã¹ã¯ãŒã«ãŒã䜿çšããŠAPIå¿çããã£ãã·ã¥ãããããã¯ãŒã¯ãå©çšã§ããªããšãã«ãã£ãã·ã¥ããæäŸããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®å埩åãåäžããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããŸãã
6. ç¶æ 管çãæé©åãã
ããã³ããšã³ãã§ã®èªèšŒç¶æ ãå¹ççã«ç®¡çããããšã¯ãäžèŠãªåèªèšŒãªã¯ãšã¹ããæå°éã«æããããã«éèŠã§ãã以äžãèæ ®ããŠãã ããïŒ
- äžå åãããç¶æ 管çïŒ ReduxãVuexãªã©ã®äžå€®éæš©çãªç¶æ 管çã©ã€ãã©ãªã䜿çšããŠãäžè²«æ§ã®ããäºæž¬å¯èœãªæ¹æ³ã§èªèšŒç¶æ ã管çããŸãã
- èªèšŒãã§ãã¯ã®ãããŠã³ã¹ïŒ èªèšŒãã§ãã¯ããããŠã³ã¹ããŠãçæéã«ãµãŒããŒãžè€æ°ã®ãªã¯ãšã¹ããéä¿¡ããããšãé¿ããŸãã
- ãªã¢ã«ã¿ã€ã æŽæ°ã®ããã®WebSocketã®äœ¿çšïŒ WebSocketã䜿çšããŠãèªèšŒç¶æ ã«é¢ãããµãŒããŒããã®ãªã¢ã«ã¿ã€ã æŽæ°ãåä¿¡ããŸããããã«ããã倿Žã®ããã«ãµãŒããŒãåžžã«ããŒãªã³ã°ããå¿ èŠããªããªããŸãã
- ãªãã¬ãã·ã¥ããŒã¯ã³ã®å®è£ ïŒ ãªãã¬ãã·ã¥ããŒã¯ã³ã䜿çšããŠããŠãŒã¶ãŒãè³æ Œæ å ±ãåå ¥åããããšãªãèªèšŒããŒã¯ã³ãèªåçã«æŽæ°ããŸããããã«ããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããèªèšŒãªã¯ãšã¹ãã®æ°ãæžå°ããŸãã
7. å€èŠçŽ èªèšŒïŒMFAïŒãæé©åãã
MFAã¯ã»ãã¥ãªãã£ã匷åããŸãããèªèšŒããã»ã¹ã«è¿œå ã®ã¹ããããå ããããšããããŸããMFAãæé©åããããã«ä»¥äžã®ææ³ãæ€èšããŠãã ããïŒ
- é©å¿åèªèšŒïŒ ãŠãŒã¶ãŒã®ãªã¹ã¯ãããã¡ã€ã«ã«åºã¥ããŠã»ãã¥ãªãã£ã¬ãã«ã調æŽããé©å¿åèªèšŒãå®è£ ããŸããäŸãã°ããªã¹ã¯ã®é«ããã©ã³ã¶ã¯ã·ã§ã³ãããŠãŒã¶ãŒãäžæ £ããªããã€ã¹ãããã°ã€ã³ããŠããå Žåã«ã®ã¿MFAãèŠæ±ããããšããããŸãã
- ããã€ã¹ã®èšæ¶ïŒ ãŠãŒã¶ãŒãåãããã€ã¹ãããã°ã€ã³ãããã³ã«MFAã³ãŒããå ¥åããå¿ èŠããªãããã«ãããã€ã¹ãèšæ¶ãããããšãèš±å¯ããŸãã
- ããã·ã¥éç¥ã®äœ¿çšïŒ MFAã«SMSã³ãŒãã®ä»£ããã«ããã·ã¥éç¥ã䜿çšããŸããããã·ã¥éç¥ã¯äžè¬çã«SMSã³ãŒããããé«éã§å®å šã§ãã
- çäœèªèšŒïŒ MFAã®èŠçŽ ãšããŠçäœèªèšŒïŒäŸïŒæçŽã¹ãã£ã³ãé¡èªèïŒã䜿çšããŸããçäœèªèšŒã¯é«éã§äŸ¿å©ããã€å®å šã§ããWeb Authentication APIïŒWebAuthnïŒã¯ãWebã¢ããªã±ãŒã·ã§ã³ã«çäœèªèšŒãå®è£ ããããã®æšæºåãããæ¹æ³ãæäŸããŸãã
8. ããã©ãŒãã³ã¹ãç£èŠããã³æž¬å®ãã
èªèšŒã·ã¹ãã ã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããã³æž¬å®ããŠãæ¹åã®äœå°ãããé åãç¹å®ããŸããæ¬¡ã®ãããªããŒã«ã䜿çšããŸãïŒ
- ãã©ãŠã¶éçºè ããŒã«ïŒ ãã©ãŠã¶éçºè ããŒã«ã䜿çšããŠãJavaScriptã³ãŒãã®ãããã¡ã€ãªã³ã°ããããã¯ãŒã¯ãªã¯ãšã¹ãã®åæãããã©ãŒãã³ã¹ã®ããã«ããã¯ã®ç¹å®ãè¡ããŸãã
- WebPageTestïŒ WebPageTestã䜿çšããŠãããŸããŸãªå Žæããã©ãŠã¶æ§æã§Webãµã€ãã®ããã©ãŒãã³ã¹ããã¹ãããŸãã
- Google PageSpeed InsightsïŒ Google PageSpeed Insightsã䜿çšããŠãWebãµã€ãã®ããã©ãŒãã³ã¹ãåäžãããæ©äŒãç¹å®ããŸãã
- ãªã¢ã«ãŠãŒã¶ãŒã¢ãã¿ãªã³ã°ïŒRUMïŒïŒ RUMããŒã«ã䜿çšããŠãå®éã®ãŠãŒã¶ãŒããããã©ãŒãã³ã¹ããŒã¿ãåéããŸããããã«ãããå®éã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«é¢ãã貎éãªæŽå¯ãåŸãããŸãã
- ã·ã³ã»ãã£ãã¯ã¢ãã¿ãªã³ã°ïŒ ã·ã³ã»ãã£ãã¯ã¢ãã¿ãªã³ã°ããŒã«ã䜿çšããŠããŠãŒã¶ãŒã®è¡åãã·ãã¥ã¬ãŒããã宿çã«èªèšŒã·ã¹ãã ã®ããã©ãŒãã³ã¹ãç£èŠããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
èªèšŒããã©ãŒãã³ã¹ãæé©åããäžæ¹ã§ã匷åãªã»ãã¥ãªãã£äœå¶ãç¶æããããšãäžå¯æ¬ ã§ãã以äžã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããïŒ
- HTTPSã®äœ¿çšïŒ åžžã«HTTPSã䜿çšããŠããŠãŒã¶ãŒã®ããã€ã¹ãšãµãŒããŒéã®ãã¹ãŠã®éä¿¡ãæå·åããŸããããã«ããããŠãŒã¶ãŒã®è³æ Œæ å ±ãååãããã®ãé²ããŸãã
- ã¯ãã¹ãµã€ããªã¯ãšã¹ããã©ãŒãžã§ãªïŒCSRFïŒä¿è·ã®å®è£ ïŒ æ»æè ãèªèšŒæžã¿ãŠãŒã¶ãŒã«ä»£ãã£ãŠãªã¯ãšã¹ããåœé ããã®ãé²ãããã«ãCSRFä¿è·ãå®è£ ããŸãã
- ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒã®äœ¿çšïŒ CSPã䜿çšããŠãWebãµã€ããèªã¿èŸŒãããªãœãŒã¹ãå¶éããŸããããã¯ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- ã©ã€ãã©ãªã®å®æçãªæŽæ°ïŒ èªèšŒã©ã€ãã©ãªã宿çã«æŽæ°ããŠãã»ãã¥ãªãã£ã®è匱æ§ã«ããããé©çšããŸãã
- ã¬ãŒãå¶éã®å®è£ ïŒ ãã«ãŒããã©ãŒã¹æ»æãé²ãããã«ã¬ãŒãå¶éãå®è£ ããŸãã
- äžå¯©ãªã¢ã¯ãã£ããã£ã®ç£èŠïŒ ç°åžžãªãã°ã€ã³ãã¿ãŒã³ã倱æãããã°ã€ã³è©Šè¡ãªã©ãèªèšŒã·ã¹ãã ã®äžå¯©ãªã¢ã¯ãã£ããã£ãç£èŠããŸãã
åœéåãšããŒã«ãªãŒãŒã·ã§ã³
èªèšŒã·ã¹ãã ãèšèšããéã«ã¯ãåœéçãªãŠãŒã¶ãŒã®ããŒãºãèæ ®ããŠãã ããã以äžãèæ ®ããŠãã ããïŒ
- è€æ°èšèªã®ãµããŒãïŒ èªèšŒã€ã³ã¿ãŒãã§ãŒã¹ã§è€æ°ã®èšèªããµããŒãããŸãã
- Unicodeã®äœ¿çšïŒ Unicodeãšã³ã³ãŒãã£ã³ã°ã䜿çšããŠãããŸããŸãªèšèªã®æåããµããŒãããŸãã
- æ¥ä»ãšæ°å€ã®ãã©ãŒãããïŒ ãŠãŒã¶ãŒã®ãã±ãŒã«ã«å¿ããŠæ¥ä»ãšæ°å€ããã©ãŒãããããŸãã
- æåçãªéãã®èæ ®ïŒ èªèšŒæ £è¡ã«ãããæåçãªéãã«æ³šæããŠãã ãããäŸãã°ãäžéšã®æåã§ã¯ãŠãŒã¶ãŒåãšããŠã¡ãŒã«ã¢ãã¬ã¹ã䜿çšããããšã奜ãå ŽåããããŸãããä»ã®æåã§ã¯é»è©±çªå·ã奜ãå ŽåããããŸãã
ã·ããªãªäŸïŒJWTã«ãããã°ã€ã³ã®æé©å
JSON Web TokensïŒJWTïŒãèªèšŒã«äœ¿çšããŠããã·ããªãªãèããŠã¿ãŸãããããã°ã€ã³ããã»ã¹ãæé©åããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒ
- ããã¯ãšã³ãïŒãµãŒããŒãµã€ãïŒïŒ
- ãŠãŒã¶ãŒããã°ã€ã³è³æ Œæ å ±ïŒãŠãŒã¶ãŒå/ãã¹ã¯ãŒãïŒãéä¿¡ããŸãã
- ãµãŒããŒã¯ããŒã¿ããŒã¹ã«å¯ŸããŠè³æ Œæ å ±ãæ€èšŒããŸãã
- æå¹ãªå ŽåããµãŒããŒã¯ãŠãŒã¶ãŒæ å ±ãå«ãJWTãçæããæå¹æéãèšå®ããŸãã
- ãµãŒããŒã¯JWTãã¯ã©ã€ã¢ã³ãã«éãè¿ããŸãã
- ããã³ããšã³ãïŒã¯ã©ã€ã¢ã³ããµã€ãïŒïŒ
- ã¯ã©ã€ã¢ã³ãã¯JWTãåä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯JWTãå®å šã«ãå€ãã®å ŽåããŒã«ã«ã¹ãã¬ãŒãžãŸãã¯ã¯ãããŒã«ä¿åããŸãã
- åŸç¶ã®ãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯`Authorization`ããããŒã«JWTãå«ããŸãïŒäŸïŒ`Authorization: Bearer
`ïŒã - ããã¯ãšã³ãã¯åãªã¯ãšã¹ãã§JWTãæ€èšŒããŠãŠãŒã¶ãŒãèªèšŒããŸãã
ãã®ã·ããªãªã®æé©åæŠç¥ïŒ
- çãæå¹æéïŒ JWTã«ã¯æ¯èŒççãæå¹æéïŒäŸïŒ15ã30åïŒã䜿çšããŸããããã«ããã䟵害ãããJWTãé·æé䜿çšããããªã¹ã¯ã軜æžãããŸãã
- ãªãã¬ãã·ã¥ããŒã¯ã³ïŒ JWTã®æå¹æéãåãããšãã«ãŠãŒã¶ãŒãè³æ Œæ å ±ãåå ¥åããããšãªãã»ãã·ã§ã³ãç¶æã§ããããã«ããªãã¬ãã·ã¥ããŒã¯ã³ãå®è£ ããŸããJWTã®æå¹æéãè¿ã¥ããšãã¯ã©ã€ã¢ã³ãã¯ãªãã¬ãã·ã¥ããŒã¯ã³ã䜿çšããŠãµãŒããŒããæ°ããJWTãèŠæ±ã§ããŸãã
- ã¹ããŒãã¬ã¹ãªããã¯ãšã³ãïŒ ããã¯ãšã³ããã¹ããŒãã¬ã¹ã«èšèšããŸããJWTã«ã¯ãŠãŒã¶ãŒãèªèšŒããããã«å¿ èŠãªãã¹ãŠã®æ å ±ãå«ãŸããŠããããããµãŒããŒã¯ã»ãã·ã§ã³ç¶æ ãç¶æããå¿ èŠããããŸãããããã«ãããã¹ã±ãŒã©ããªãã£ãåäžããŸãã
- ããŒã¯ã³ã®æ€èšŒïŒ JWTãæ€èšŒããããã«äœ¿çšãããå ¬ééµããã£ãã·ã¥ããŠããµãŒããŒããç¹°ãè¿ãååŸããã®ãé¿ããŸãã
çµè«
ããã³ããšã³ãã®è³æ Œæ å ±ç®¡çã®ããã©ãŒãã³ã¹ãæé©åããããšã¯ãã¹ã ãŒãºã§å®å šãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«äžå¯æ¬ ã§ãã課é¡ãçè§£ãããã¹ããã©ã¯ãã£ã¹ãå®è£ ããããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããããšã§ãèªèšŒåŠçé床ãå€§å¹ ã«åäžããããŠãŒã¶ãŒã®äžæºã軜æžã§ããŸããããã©ãŒãã³ã¹ãšã»ãã¥ãªãã£ã®ãã©ã³ã¹ãåããåœéçãªãŠãŒã¶ãŒã®ããŒãºãèæ ®ããããšãå¿ããªãã§ãã ããããããã®äž»èŠãªé åã«çŠç¹ãåœãŠãããšã§ãé«éãã€å®å šãªèªèšŒã·ã¹ãã ãäœæãããŠãŒã¶ãŒæºè¶³åºŠã®åäžãšããžãã¹ææã®æ¹åã«ã€ãªããããšãã§ããŸãã
ãããã¯ãŒã¯ãèšç®è² è·ãã©ã€ãã©ãªã®éžæãç¶æ 管çãæ éã«æ€èšãããã£ãã·ã¥ããªãããŒããªã©ã®æŠç¥ã掻çšããããšã§ããŠãŒã¶ãŒã®å Žæãããã€ã¹ã«é¢ä¿ãªããã¯ããã«å¿çæ§ã®é«ãèªèšŒäœéšãåµåºã§ããŸããçã«å ç¢ã§ä¿¡é Œæ§ã®é«ãã·ã¹ãã ã®ããã«ã¯ãããã©ãŒãã³ã¹ãšäžŠè¡ããŠã»ãã¥ãªãã£ãåªå ããããšãå¿ããªãã§ãã ããã