Cookie ã®äœ¿çšã«ã€ããŠ.æ¬ãµã€ãã§ã¯ãåºæ¬æ©èœã®æäŸã«å¿ èŠãªå¿ é Cookie ã䜿çšããŠããŸããããã«ãåæããã ããå Žåã«éããã¢ã¯ã»ã¹è§£æ Cookie ãå©çšããŠå©çšç¶æ³ãææ¡ãããµãŒãã¹æ¹åã«åœ¹ç«ãŠãŸãã詳ãã㯠.
ãã®ããŒã«ã¯äœ¿ããããã£ãã§ããïŒ
ãã£ãŒãããã¯ã¯æ¹åã«åœ¹ç«ã¡ãŸã
æéè¿æ»€HTMLãJSäžCSS代ç ïŒå¿«éè·åŸçº¯åå 容ã
éåžžã®ããã¹ããããã³ã°ã«å¯Ÿå¿ããŠããŸããHTML/JS/CSSãã£ã«ã¿ãŒåŠçåŸã«å®è¡ããããããæçµçãªèª¿æŽã«äŸ¿å©ã§ãã
å·ŠåŽã«å ¥åå 容ã貌ãä»ããŠãã ãããåŠççµæãããã«è¡šç€ºãããŸãã
æŠèŠ
解決ã§ãã課é¡ãåŠçã®ä»çµã¿ãããŒã¿ã®ç¯å²ã確èªã§ããŸãã
貌ãä»ããããã¹ããããHTMLãããã¿ã°ãscriptèŠçŽ ãstyleèŠçŽ ãã³ã¡ã³ããéžæããŠåãé€ããŸããHTMLã¿ã°ã®é€å»ãæå¹ã«ãããšãã¿ã°ãšHTMLã³ã¡ã³ããåãé€ããnbspãampãltãgtãquotã#39ã®ãã䜿ãããæååç §ã察å¿ããæåã«çœ®ãæããŸããscripté€å»ã¯scriptã¿ã°ã§å²ãŸããéšåãCSSé€å»ã¯styleã¿ã°ã§å²ãŸããéšåãšãåŒçšç¬Šã§å²ãŸããstyle屿§ã察象ã«ããŸãã
åŠçã¯è²Œãä»ããæååãé ã«çœ®æããæ¹åŒã§ããææžãå®å šã«è§£æããŠæ§é ãä¿ã£ãããããŒãžã®æ¬æã ããå€å®ããŠæœåºããããããã®ã§ã¯ãããŸãããããšãã°ã¿ã°é€å»ã§ã¯ãèŠåºãããªã³ã¯ãªã©ã®ã¿ã°ããªããªããã¿ã°ã®å åŽã«ããæåãæ®ããŸãã
<script>...</script>ã§å²ãŸããç¯å²ãé€ããŸããã€ãã³ã屿§ãªã©ãã¿ã°å
ã«æžãããã¹ã¯ãªããã¯å¯Ÿè±¡å€ã§ãã<style>...</style>ãšãåŒçšç¬Šä»ãã®style屿§ãé€ããŸããå€éšCSSãžã®ãªã³ã¯ã¯åŠçããŸãããéžæããåŠçã¯ãã®é ã«é©çšãããŸããå ¥åã»åºåã»æžå°ããæåæ°ã®è¡šç€ºã¯é·ãã®å·®ã瀺ããã®ã§ãåé€ã®æ£ç¢ºããå®å šæ§ã®è©äŸ¡ã§ã¯ãããŸããã
äœ¿ãæ¹
æé ã«æ²¿ã£ãŠæäœããäŸã䜿ã£ãŠå ¥åãšçµæã確èªããŸãã
HTMLãã¹ã¿ã€ã«ãå«ãããã¹ããå ¥åæ¬ã«è²Œãä»ããŸããåŸã§æ¯èŒã§ãããããå¿ èŠãªãå ã®ããã¹ããå¥ã«ä¿ç®¡ããŠãã ããã
æ¬æã ããèªã¿ãããšãã¯HTMLã¿ã°ãscriptãstyleãå¿ èŠã«å¿ããŠæå¹ã«ããŸããã¿ã°æ§é ãæ®ããŠã€ã³ã©ã€ã³ã¹ã¿ã€ã«ã ããé€ããªããHTMLã¿ã°é€å»ãåããCSSé€å»ã䜿ããŸããã³ã¡ã³ãã ããæ¶ãå ŽåãHTMLã¿ã°é€å»ãåã£ãŠãã ããã
çµææ¬ã¯å ¥åã«å¿ããŠæŽæ°ãããŸããæ€çŽ¢æååãšçœ®ææååã䜿ããšããã£ã«ã¿ãŒåŸã«æ®ãç¹å®ã®èªå¥ããŸãšããŠçœ®ãæããããŸãã空ã®çœ®ææååã«ãããšãæ€çŽ¢æååãåé€ã§ããŸãã
æå³ããæç« ãã³ãŒããæ®ã£ãŠãããã確èªããçµæãã³ããŒãããããã¹ããã¡ã€ã«ãšããŠããŠã³ããŒãããŸããæåæ°ã®æžå°ã¯åŠçå¯Ÿè±¡ãæ¶ããéã®ç®å®ãšããŠèŠãŠãã ããã
å
¥åã<p style="color:red">ããã«ã¡ã¯</p><script>run()</script>ã®å ŽåãHTMLã¿ã°ãšJavaScriptã®äž¡æ¹ãé€ããšãæ¬æã®ãããã«ã¡ã¯ããæ®ããŸããHTMLã¿ã°ãæ®ããŠCSSã ããé€ãã°ã段èœã¿ã°ã¯æ®ããåŒçšç¬Šä»ãstyle屿§ãšscriptèŠçŽ å
ã®æåã¯CSSåŠçã ãã§ã¯å€ãããŸãããè€æ°ã®åŠçãéžãã ãšãã¯ãã©ã®æåãã©ã®æ®µéã§å€ãããããã¬ãã¥ãŒã§ç¢ºãããŠãã ããã
掻çšäŸ
ä»äºãæ¥åžžã®æµãã®äžã§ã®æŽ»ç𿹿³ã玹ä»ããŸãã
CMSãã¡ãŒã«ããã³ããŒããçãHTMLæçã§ã¿ã°é€å»ã詊ããæ®ã£ãæåãè³æäœæã確èªçšã¡ã¢ã«ã³ããŒããŸããæ®µèœãèŠåºãã®åºåãã¯èªåã§è£ãããªããããå¿ èŠãªãåŸããæ¹è¡ãæŽããŸãã
ã¿ã°æ§é ã確èªããªããstyleèŠçŽ ãåŒçšç¬Šä»ãstyle屿§ãé€ããããšãã«äœ¿ããŸããCSSé€å»ã ãã§ã¯ã¯ã©ã¹åãå€éšã¹ã¿ã€ã«ã·ãŒãã®æå®ã¯ãªããªããŸããã
ãã£ã«ã¿ãŒåŸã®ããã¹ãã§åãèªå¥ãä»®ã®ã©ãã«ãäžæ¬å€æŽã§ããŸããåºã䜿ãããçãèªãæ€çŽ¢ãããšæå³ããªãç®æãŸã§å€ããããšããããããçµæã確èªããŠããå©çšããŠãã ããã
Q&A
ããããçåãè¿·ããããç¹ããŸãšããŠç¢ºèªã§ããŸãã
ããããscriptã¿ã°ã§å²ãŸããç¯å²ã察象ã§ããonclickãªã©HTML屿§ã«æžãããã³ãŒãããå¥ã®åœ¢åŒã§åã蟌ãŸããã¹ã¯ãªããããã¹ãŠæ¢ãæ©èœã§ã¯ãããŸããã
æ®µèœæ§é ãè§£æããŠæ¹è¡ãäœãåŠçã¯ãããŸãããã¿ã°ãåãé€ããçµæãæåãç¶ããŠèŠããããšããããŸããå¿ èŠã«å¿ããŠçµæãæäœæ¥ã§æŽããŠãã ããã
ããããå ¥åãšåºåã®æåæ°ã®å·®ã§ããå±éºæ§ã®å€å®ãã¿ã°ã®ç¶²çŸ çãã»ãã¥ãªãã£æ€æ»ã®çµæã衚ããŸããã
泚æ
å©çšç¯å²ãçµæã®å¶éãå¿ èŠãªæ³šæç¹ãäºåã«ç¢ºèªããŸãã
ãã®åŠçãXSS察çãå ¬éåã®HTMLãµãã¿ã€ãºãšããŠäœ¿ããªãã§ãã ãããæåå眮æã§ã¯HTMLã®æ§æãå©çšå Žæããšã®æå³ãå®å šã«è©äŸ¡ã§ãããã€ãã³ã屿§ãªã©ãæ®ãå ŽåããããŸããOWASPã¯ãåºåå ã®æèã«å¿ãããšã³ã³ãŒãããå®å šãªHTMLãèš±ãå Žåã®é©åãªãµãã¿ã€ãºãæ¡å ããŠããŸããå ¬éããå ¥åãæ±ãå Žåã¯ãçšéã«åã£ãæ€èšŒæžã¿ã®å¯Ÿçãå¥éèšèšããŠãã ããã
é¢é£
é¢é£ããŒã«ãç¹éãå©çšå¯èœãªAPIãæ¢ããŸãã