Cookie ã®äœ¿çšã«ã€ããŠ.æ¬ãµã€ãã§ã¯ãåºæ¬æ©èœã®æäŸã«å¿ èŠãªå¿ é Cookie ã䜿çšããŠããŸããããã«ãåæããã ããå Žåã«éããã¢ã¯ã»ã¹è§£æ Cookie ãå©çšããŠå©çšç¶æ³ãææ¡ãããµãŒãã¹æ¹åã«åœ¹ç«ãŠãŸãã詳ãã㯠.
ç¡æJSé£èªåããŒã«ããœãŒã¹ã³ãŒãä¿è·
ãã®ããŒã«ã¯äœ¿ããããã£ãã§ããïŒ
ãã£ãŒãããã¯ã¯æ¹åã«åœ¹ç«ã¡ãŸã
对JavaScript代ç è¿è¡æ··æ·ïŒéèåå§é»èŸïŒé²æ¢ä»£ç 被éåä¿®æ¹ã
æŠèŠ
解決ã§ãã課é¡ãåŠçã®ä»çµã¿ãããŒã¿ã®ç¯å²ã確èªã§ããŸãã
ãã®ããŒãžã§ã¯ãJavaScriptãœãŒã¹å ã®åŒçšç¬Šä»ãæååãå¥ã®è¡šèšã«å€æã§ããŸããéžã¹ãæ¹åŒã¯ã16é²ãšã¹ã±ãŒããUnicodeãšã¹ã±ãŒããæååé åãžã®çœ®ãæããBase64æååãevalã§å®è¡ãã圢åŒã®4çš®é¡ã§ãã倿°åã®å€æŽãå¶åŸ¡ãããŒã®å€æããããã³ãŒã远å ãªã©ãè¡ãæ±çšçãªé£èªååšãšã¯æ©èœç¯å²ãç°ãªããŸãã
æååãšã¹ã±ãŒãã¯ãæåãããã¯ã¹ã©ãã·ã¥ä»ãã®ç¬Šå·ã§æžãè¡šãæ¹æ³ã§ããããšãã°æååã®è±åã¯\x圢åŒãUnicodeæåã¯\u圢åŒã§è¡šç€ºã§ããŸããæååé
åã¢ãŒãã§ã¯ãæååãé
åã«ãŸãšããå
ã®ç®æãé
ååç
§çšã®é¢æ°åŒã³åºãã«çœ®ãæããŸããããããäž»ã«ãœãŒã¹ã®èŠãç®ãå€ããåŠçã§ãç§å¯æ
å ±ãå®ãæå·åã§ã¯ãããŸããã
ç»é¢ã«ã¯å ¥åæ¬ãšå€æçµæã衚瀺ãããåºåãã³ããŒãŸãã¯ããŠã³ããŒãã§ããŸããå ¥åå 容ãšéžæå 容ã«å¿ããŠçµæãäœããããããæ¹åŒããšã®å·®ãçãã³ãŒãçã§ç¢ºãããŠããå©çšã§ããŸãã
| æ¹åŒ | çµæã®ç¹åŸŽ | 確èªãããç¹ |
|---|---|---|
| æååã16鲿°ã§è¡šèš | æååäžã®åæåãäž»ã«\xHHãŸãã¯\uHHHHã§è¡šã | æåå以å€ã®ã³ãŒãã¯åç§°å€æŽãããªã |
| Unicodeãšã¹ã±ãŒã | æååäžã®æåã\uHHHH圢åŒã«ãã | åºåå ã®å®è¡ç°å¢ã§å ã®è¡šç€ºã確èªãã |
| æååé å | æååãé åã«çœ®ããåç §åŒã³åºããæ¿å ¥ãã | å é ã«é åãšåç §é¢æ°ã®å®çŸ©ãå ãã |
| Base64 + eval | ã³ãŒãå šäœãBase64衚çŸã«å ã¿ãå®è¡æã«è©äŸ¡ãã圢ã«ãã | Base64ã¯å¯éã§ãããevalã¯æååãã³ãŒããšããŠå®è¡ãã |
Base64ã¯ãã€ããªãããã¹ããå¥ã®æå衚çŸã«ç¬Šå·åããæ¹åŒã§ããèªã¿ã¥ããæååã«ãªã£ãŠãã埩å·ããã°å ã®ããŒã¿ãåŸããããããæå·åãã¢ã¯ã»ã¹å¶åŸ¡ã®ä»£ããã«ã¯ãªããŸãããRFC 4648ã¯Base64ãããŒã¿ç¬Šå·åæ¹åŒãšããŠå®çŸ©ããŠããŸãã
äœ¿ãæ¹
æé ã«æ²¿ã£ãŠæäœããäŸã䜿ã£ãŠå ¥åãšçµæã確èªããŸãã
å€æå¯Ÿè±¡ã®JavaScriptã³ãŒããå ¥åæ¬ã«è²Œãä»ããŸããç»é¢ã®ãµã³ãã«ãèªã¿èŸŒãã§ãåæ¹åŒã®åºåã詊ãããšãã§ããŸãã
4ã€ã®æ¹åŒãã1ã€éžã³ãŸããæåã¯çã颿°ãæåå宿°ã ããå«ãã³ãŒãã§ãã©ã®éšåãå€ãããã確èªãããšæ¯èŒãããããªããŸãã
å¿ èŠã«å¿ããŠãã³ã¡ã³ãåé€ããšã空çœã»æ¹è¡å§çž®ããåãæ¿ããŸãã倿ãäžã€ãã€æå¹ã«ããå·®åãèŠãªããæåã確ãããŠãã ããã
衚瀺ãããçµæãã³ããŒãããããŠã³ããŒãããå ã®ãã¡ã€ã«ãæ®ãããŸãŸã察象ã®ãã©ãŠã¶ãŒãå®è¡ç°å¢ã§åäœã詊ããŸãã
åºåã空ããŸãã¯ãšã©ãŒè¡šç€ºã«ãªãå Žåã¯ããŸãå ¥åãæå°ã®åçŸäŸãŸã§çãããã³ã¡ã³ãåé€ã空çœå§çž®ããªãã«ããŠããæ¹åŒãåãæ¿ããŠç¢ºèªããŠãã ããã
ã³ã¡ã³ãåé€ã¯ãœãŒã¹ããã³ã¡ã³ããããç¯å²ãåãé€ãåŠçã§ãã空çœå§çž®ã¯åè¡ã®é£ç¶ããåè§ã¹ããŒã¹ãã¿ããæŽçãã空è¡ãé€ããŸããããã¯æ§æè§£æåšã«ããå®å šãªæå°åã§ã¯ãããŸãããæ£èŠè¡šçŸãªãã©ã«ããã³ãã¬ãŒããªãã©ã«ãæååäžã®ç©ºçœãç¹æ®ãªã³ã¡ã³ãèšæ³ãªã©ãå«ãã³ãŒãã§ã¯ã倿ãæå³ããæå³ãä¿ã€ãæ éã«ç¢ºèªããŠãã ããã
æåå倿ããã¹ãŠã®JavaScriptææ³ãæ€èšŒã»ä¿®æ£ããã³ã³ãã€ã«åŠçã§ã¯ãããŸããããã³ãã¬ãŒããªãã©ã«å ã®æç« ã¯éåžžã®åŒçšç¬Šä»ãæååãšå¥æ±ãã§ãå€æå¯Ÿè±¡ã«ãªããŸãããçµæãèªã¿ã«ãããªã£ãããšã ããæ ¹æ ã«ãå ãšåãåäœããããšå€æããªãã§ãã ããã
掻çšäŸ
ä»äºãæ¥åžžã®æµãã®äžã§ã®æŽ»ç𿹿³ã玹ä»ããŸãã
åŠç¿è ãè¬åž«ããçãæååãå ¥åããŠ16é²ã»Unicode衚èšãèŠæ¯ã¹ãçšéã§ããæåããœãŒã¹äžã§ã©ã®ãããªãšã¹ã±ãŒã衚çŸã«ãªããã確èªã§ããŸãã
éçºè ãç¡å®³ãªãµã³ãã«äžã®æåå衚çŸãæ¯èŒãããã¹ãçšã®åºåãäœãå Žé¢ã«äœ¿ããŸããæ¡çšåã«å ã³ãŒããšå€æåŸã³ãŒãã®åäœã察象ç°å¢ã§ç §åããŸãã
ã¬ãã¥ãŒæ åœè ãããšã¹ã±ãŒããæååé åãBase64ã©ãããŒã®èŠãæ¹ãææã»èª¬æè³æã§ç€ºãçšéã§ããåºåã¯å®å šæ§æ€æ»ããã«ãŠã§ã¢å€å®ã®çµæã§ã¯ãããŸããã
Q&A
ããããçåãè¿·ããããç¹ããŸãšããŠç¢ºèªã§ããŸãã
å€ãããŸããããã®ããŒã«ã倿ããã®ã¯äž»ã«åŒçšç¬Šä»ãæååã®è¡šèšã§ããèå¥åã®æ¹åãå¶åŸ¡ãããŒå€æãå¿ èŠãªãããã®æ©èœãæç€ºããŠããå¥ã®éçºããŒã«ãéžã³ã察象ã³ãŒãã§äºææ§ãæ€èšŒããŠãã ããã
ã§ããŸãããBase64ã¯åŸ©å·ã§ãã笊å·åã§ãããŸããåºåã¯å®è¡æã«evalã§æååãã³ãŒããšããŠè©äŸ¡ããŸããæ©å¯å€ãé ãçšéã«ãããå 容ã確èªããã³ãŒãã ããæ±ã£ãŠãã ããã
Unicodeãšã¹ã±ãŒãæ¹åŒã§ã¯ãæååã®æåãUnicodeã³ãŒãåäœã®ãšã¹ã±ãŒã衚èšã«ããŸããå®éã®è¡šç€ºãç¹æ®ãªæåã®æ±ãã¯å¯Ÿè±¡ç°å¢ã§ç¢ºèªããŠãã ããããã³ãã¬ãŒããªãã©ã«å ã®æååã¯ãã®æ¹åŒã®éåžžã®å€æå¯Ÿè±¡ã§ã¯ãããŸããã
å€ããå¯èœæ§ããããŸããã³ã¡ã³ãåé€ã¯åçŽãªæåèµ°æ»ã空çœå§çž®ã¯è¡åäœã®ããã¹ãåŠçã§ãããå®å šãªJavaScriptæ§æè§£æã§ã¯ãããŸãããç¹ã«æååã»ãã³ãã¬ãŒãã»æ£èŠè¡šçŸããã«ãçšã³ã¡ã³ããå«ãå Žåã¯ããªãã·ã§ã³ãåå¥ã«è©Šããå®è¡ãã¹ãããŠãã ããã
泚æ
å©çšç¯å²ãçµæã®å¶éãå¿ èŠãªæ³šæç¹ãäºåã«ç¢ºèªããŸãã
ãã®å€æã¯ãœãŒã¹ãèªã¿ã«ããããå ŽåããããŸãããã³ãŒãã®è§£æãæ¹å€ãè€è£œã鲿¢ããä¿èšŒã¯ãããŸãããã¯ã©ã€ã¢ã³ãåŽã«å«ããAPIããŒããã¹ã¯ãŒããããŒã¯ã³ãå人ããŒã¿ã¯ã衚èšãå€ããŠãç§å¯ã«ã¯ãªããŸãããç§å¯æ å ±ã¯ã¯ã©ã€ã¢ã³ãã³ãŒããžåã蟌ãŸããé©åãªãµãŒããŒåŽã®ç®¡çæ¹æ³ã䜿ã£ãŠãã ããã
Base64 + evalæ¹åŒã¯çæãããæååãã³ãŒããšããŠå®è¡ããŸããåºæãå 容ã確èªã§ããªãã³ãŒãã¯åŠçã»å®è¡ããããã¹ãæã¯åœ±é¿ãéå®ã§ããç°å¢ã䜿ã£ãŠãã ããã倿åŸã¯å ãã¡ã€ã«ãä¿ç®¡ããæ©èœã»è¡šç€ºã»ã³ã³ãœãŒã«ãšã©ãŒã確èªããŠããæ¡çšããŠãã ããã
JavaScriptã®æååããšã¹ã±ãŒãã®èãæ¹ã¯MDNã®JavaScriptæåå解説ãåç §ããŠãã ãããMDNã®eval()è§£èª¬ã¯æååã®ã³ãŒãå®è¡ãšãã®ãªã¹ã¯ã説æããŠããŸãã
é¢é£
é¢é£ããŒã«ãç¹éãå©çšå¯èœãªAPIãæ¢ããŸãã