åé¡ã®æ¬è³ªã説æããããã«ãHTMLã®äžè¬çãªé
眮æ¹æ³ãäŒããå¿
èŠããããŸãã ããããäžè¬çãªçšèªã§æ³åãããšæããŸãããç解ã«å¿
èŠãªäž»ãªç¹ã«ã€ããŠã¯ç°¡åã«èª¬æããŸãã 誰ããåŸ
ãŠãªãå Žåã¯ããã€ã³ãã«çŽè¡ããŠãã ãã ã
HTMLã¯ãã€ããŒããã¹ãããŒã¯ã¢ããèšèªã§ãã ãã®èšèªã話ãã«ã¯ããã®åœ¢åŒã«åŸãå¿
èŠããããŸããããããªããšãæžããããã®ãèªã人ã¯ããªããç解ã§ããŸããã ããšãã°ãHTMLã§ã¯ãã¿ã°ã«ã¯æ¬¡ã®å±æ§ããããŸãã
<p name="value">
ããã§ã [name]
ã¯å±æ§ã®ååã [value]
ã¯ãã®å€ã§ãã ãã®èšäºã§ã¯ãã³ãŒãã®ååŸã«è§ãã£ãã䜿çšããŠãã³ãŒãã®éå§äœçœ®ãšçµäºäœçœ®ãæ確ã«ããŸãã ååã®åŸã«çå·ãããããã®åŸã«åŒçšç¬Šã§å²ãŸããå€ããããŸãã å±æ§å€ã¯ãæåã®åŒçšæåã®çŽåŸããå§ãŸããã©ãã«ããŠã次ã®åŒçšæåã®çŽåã§çµãããŸãã ããã¯ã [value]
代ããã«[value]
[OOO " ".]
[value]
ãæžãå Žåã name
å±æ§ã®å€ã¯[OOO ]
ã«ãªããèŠçŽ ã«ã¯ååãæã€ä»ã®3ã€ã®å±æ§[]
ã []
ããã³["."]
ããããæå³ãªãã
<p name="OOO " "."></p>
ãããäºæãããã®ã§ãªãå Žåã¯ãå±æ§ã®å€ãäœããã®æ¹æ³ã§å€æŽããŠãåŒçšç¬Šã衚瀺ãããªãããã«ããå¿
èŠããããŸãã ããªããèããããšãã§ããæãç°¡åãªããšã¯ãåã«åŒçšç¬Šãåãåãããšã§ãã
<p name="OOO ."></p>
HTMLããŒãµãŒã¯å€ãæ£ããèªã¿åããŸãããåé¡ã¯å€ãç°ãªãããšã§ãã ããªãã¯[OOO " "]
æãã§ããŸããããããªãã¯[OOO .]
ãæã«å
¥ããŸããã å Žåã«ãã£ãŠã¯ããã®éããéèŠã«ãªãããšããããŸãã
å€ãšããŠä»»æã®æååãæå®ã§ããããã«ãHTMLèšèªåœ¢åŒã¯å±æ§å€ããšã¹ã±ãŒãããæ©èœãæäŸããŸãã å€æååã®åŒçšç¬Šã®ä»£ããã«ãäžé£ã®æå["]
ãèšè¿°ã§ã["]
ããŒãµãŒã¯ãå±æ§å€ãšããŠäœ¿çšããå
ã®æååã®ãã®å Žæã«åŒçšç¬Šããã£ãããšãç解ããŸãã ãã®ãããªã·ãŒã±ã³ã¹ã¯HTMLãšã³ãã£ãã£ãšåŒã°ããŸãã
<p name="OOO " "."></p>
åæã«ãå®éã«ãœãŒã¹æååã«æåã·ãŒã±ã³ã¹["]
ããã£ãå ŽåãããŒãµãŒãåŒçšç¬Šã«å€æããªãããã«èšè¿°ããæ©äŒããããŸãããããè¡ãã«ã¯ã [&]
èšå·ãæåã·ãŒã±ã³ã¹[&]
ã«çœ®ãæã[&]
ãã€ãŸãã ["]
代ããã«ãçããã¹ãã«[&quot;]
ãèšè¿°ããå¿
èŠããããŸãã
å
ã®æååãã2ã€ã®åŒçšç¬Šã®éã«èšè¿°ããæååãžã®å€æã¯ã æ確ã§å¯éçã§ããããšãããããŸãã ãããã®å€æã®ãããã§ãHTMLã¿ã°ã®å±æ§ãšããŠããã®å
容ã®æ¬è³ªã«è§Šããããšãªãã ä»»æã®è¡ãèªã¿æžãã§ããŸãã 圢åŒã«åŸãã ãã§ããã¹ãŠãæ©èœããŸãã
å®éãããã¯ç§ãã¡ãééããã»ãšãã©ã®ãã©ãŒãããããã®ããã«æ©èœããæ¹æ³ã§ãïŒæ§æãããããã®æ§æããã³ã³ãã³ãããšã¹ã±ãŒãããæ¹æ³ãããããã®ãããªã·ãŒã±ã³ã¹ãå
ã®è¡ã«ããå Žåã«ãšã¹ã±ãŒãæåããšã¹ã±ãŒãããæ¹æ³ããããŸãã ã»ãšãã©ã§ãããããã§ã¯ãããŸãã...
<script>ã¿ã°
<script>ã¿ã°ã¯ãä»ã®èšèªã§èšè¿°ãããHTMLãã©ã°ã¡ã³ããåã蟌ãããã«äœ¿çšãããŸãã ä»æ¥ã§ã¯99ïŒ
ã®ã±ãŒã¹ã§Javascriptã§ãã ã¹ã¯ãªããã¯ãéå§<script>ã¿ã°ã®çŽåŸããéå§ããçµäº</ script>ã¿ã°ã®çŽåã§çµäºããŸãã HTMLããŒãµãŒã¯ã¿ã°ã®å
éšã調ã¹ãŸãããããã¯ãJavascriptããŒãµãŒã«æž¡ãããã¹ãã®äžéšã«ãããªãããã§ãã
Javascriptã¯ãç¬èªã®æ§æãæã€ç¬ç«ããèšèªã§ãããäžè¬çã«ãHTMLã«åã蟌ãŸãããã®ã®ããã®ç¹å¥ãªæ¹æ³ã§èšèšãããŠããŸããã ãã®äžã«ã¯ãä»ã®èšèªãšåæ§ã«ãäœã§ãã§ããæååãªãã©ã«ããããŸãã ãŸããæ¢ã«æšæž¬ããŠããããã«ãçµäº</ script>ã¿ã°ãæå³ããäžé£ã®æåãååšããå ŽåããããŸãã
<script> var s = "surprise!</script><script>alert('whoops!')</script>"; </script>
èµ·ããã¹ãããšïŒ s
å€æ°ã«ã¯ç¡å®³ãªæååãå²ãåœãŠãå¿
èŠããããŸãã
ããã§å®éã«èµ·ããããšïŒå€æ°s
宣èšãããŠããã¹ã¯ãªããã¯ãå®éã«ã¯æ¬¡ã®ããã«çµäºããŸãïŒ [var s = "surprise!]
ãæ§æãšã©ãŒã«ãªããŸãããã®åŸã®ãã¹ãŠã®ããã¹ãã¯çŽç²ãªHTMLãšããŠè§£éãããããã¹ããåã蟌ãããšãã§ããŸãããŒã¯ã¢ããïŒãã®å Žåãæ°ãã<script>ã¿ã°ãéãããæªæã®ããã³ãŒããå®è¡ãããŸãã
å±æ§å€ã«åŒçšç¬Šãããå Žåãšåãå¹æãåŸãããŸããã ãã ããå±æ§å€ãšã¯ç°ãªãã<script>ã¿ã°ã§å
ã®ã³ã³ãã³ãããšã¹ã±ãŒãããæ¹æ³ã¯ãããŸããã <script>ã¿ã°å
ã®HTMLãšã³ãã£ãã£ã¯æ©èœãããå€æŽããã«JavascriptããŒãµãŒã«æž¡ãããŸããã€ãŸãããšã©ãŒãçºçããããæå³ãå€ãã£ããããŸãã HTMLæšæºã§ã¯ã<script>ã¿ã°ã®ã³ã³ãã³ãã«ã¯ãã©ã®ãããªåœ¢åŒã§ãæåã·ãŒã±ã³ã¹</ script>ãå«ããããšã¯ã§ããŸããã ãŸããJavascriptæšæºã§ã¯ããã®ãããªã·ãŒã±ã³ã¹ãæååãªãã©ã«ã®ã©ããã«ããããšãçŠæ¢ããŠããŸããã
é説çãªç¶æ³ãå€æããŸããã æå¹ãªJavascriptãå®å
šã«æå¹ãªæ段ã§æå¹ãªHTMLããã¥ã¡ã³ãã«åã蟌ãã åŸãç¡å¹ãªçµæãåŸãããšãã§ããŸã ã
ç§ã®æèŠã§ã¯ãããã¯å®éã®ã¢ããªã±ãŒã·ã§ã³ã®è匱æ§ã«ã€ãªããHTMLããŒã¯ã¢ããã®è匱æ§ã§ãã
è匱æ§ã®æªçšæ¹æ³
ãã¡ãããã³ãŒããèšè¿°ããã ãã§ã¯ã</ script>è¡ã«äœãæžããæ³åããã®ã¯é£ãããåé¡ã«æ°ä»ããªãã§ãããã å°ãªããšããæ§æã®åŒ·èª¿è¡šç€ºã«ãããã¿ã°ãäºåã«éããããŠããããšãããããŸããæ倧ã§ãäœæããã³ãŒãã¯éå§ããããäœãèµ·ãã£ãã®ããé·æéæ¢ããŸãã ããããããã¯ãã®è匱æ§ã®äž»ãªåé¡ã§ã¯ãããŸããã HTMLãçæãããšãã«Javascriptã«ã³ã³ãã³ããåã蟌ããšåé¡ãçºçããŸãã 次ã«ãreactãã¬ã³ããªã³ã°ãããµãŒããŒäžã®ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®é »ç¹ãªéšåã瀺ããŸãã
<script> window.__INITIAL_STATE__ = <%- JSON.stringify(initialState) %>; </script>
initialState
</ script>ã¯ããŠãŒã¶ãŒãŸãã¯ä»ã®ã·ã¹ãã ããããŒã¿ãéä¿¡ãããä»»æã®å Žæã«è¡šç€ºã§ããŸãã JSON.stringify
ã¯ãJSONããã³Javascript圢åŒãšå®å
šã«äžè²«ããŠãããããã·ãªã¢ã©ã€ãºäžã«ãã®ãããªæååãå€æŽããŸããããããã£ãŠãããŒãžã«ã¢ã¯ã»ã¹ããæ»æè
ããŠãŒã¶ãŒã®ãã©ãŠã¶ã§ä»»æã®Javascriptãå®è¡ã§ããããã«ããŸãã
å¥ã®äŸïŒ
<script> analytics.identify( '<%- user.id.replace(/(\'|\\)/g, "\\$1") %>', '<%- request.HTTP_REFERER.replace(/(\'|\\)/g, "\\$1") %>', ... ); </script>
ããã§ããµãŒããŒã«æ¥ããŠãŒã¶ãŒid
ãšreferer
ã¯ãé©åãªãšã¹ã±ãŒãã§è¡ã«æžã蟌ãŸããŸãã ãããŠã user.id
ã«æ°å以å€ã®ã»ãšãã©ãªãå Žåã referer
æ»æè
ã¯äœã§ãuser.id
ããšãã§ããŸãã
ããããçµäºã¿ã°</ script>ãžã§ãŒã¯ã¯ããã§çµãããŸããã éå§<script>ã¿ã°ã¯ããã®åã«æå[<!--]
ãããå Žåãå±éºã§ã[<!--]
ããã¯ããã¬ãŒã³HTMLã§ã¯è€æ°è¡ã³ã¡ã³ãã®éå§ã瀺ããŸãã ãã®å Žåãã»ãšãã©ã®ãšãã£ã¿ãŒã®æ§æ匷調衚瀺ã¯åœ¹ã«ç«ã¡ãŸããã
<script> var a = 'Consider this string: <!--'; var b = '<script>'; </script> <p>Any text</p> <script> var s = 'another script'; </script>
å¥åº·ãªäººãšã»ãšãã©ã®æ§æãã€ã©ã€ãã¯ãã®ã³ãŒãã§äœãèŠãã®ã§ããããïŒ æ®µèœã®éã«ãã2ã€ã®<script>ã¿ã°ã
ç
æ°ã®HTML5ããŒãµãŒã¯äœãèŠãŸããïŒ åœŒã¯ã2è¡ç®ããæåŸã®è¡ãŸã§ã®ãã¹ãŠã®ããã¹ããå«ã1ã€ã®ïŒïŒïŒéããããŠããªãïŒïŒïŒ<script>ã¿ã°ãèŠãŠããŸãã
ç§ã¯ããããªããã®ããã«æ©èœããã®ãå®å
šã«ã¯ç解ããŠããŸãã[<!--]
æå[<!--]
ã©ããã§HTMLããŒãµãŒãéå§ããã³çµäº<script>ã¿ã°ã®ã«ãŠã³ããéå§ãããã¹ãŠãçµäºãããŸã§ã¹ã¯ãªããã®å®äºãèæ
®ããªãããšãç解ããã ã[<!--]
<script>ã¿ã°ãéããŸãã ã€ãŸããã»ãšãã©ã®å Žåããã®ã¹ã¯ãªããã¯ããŒãžã®æåŸã«ç§»åããŸãïŒèª°ããäžã«å¥ã®è¿œå ã®çµäº</ script>ã¿ã°ãæ¿å
¥ã§ããªãéããheheïŒã ããªããããã«ééããããšããªããªããããªãã¯ç§ãä»åè«ãèšã£ãŠãããšæããããããŸããã æ®å¿µãªããããããŸããã äžèšã®ãµã³ãã«DOMããªãŒã®ã¹ã¯ãªãŒã³ã·ã§ããã¯æ¬¡ã®ãšããã§ãã

æãäžæå¿«ãªã®ã¯ãJavaScriptã§æååãªãã©ã«å
ã§ã®ã¿çºçããçµäº</ script>ã¿ã°ãšã¯ç°ãªããæåã·ãŒã±ã³ã¹<!--
ããã³<script
ãã³ãŒãèªäœã§çºçããå¯èœæ§ãããããšã§ãïŒ ãããŠããããã¯ãŸã£ããåãå¹æããããŸãã
<script> if (x<!--y) { ... } if ( player<script ) { ... } </script>
ããªãã¯ãŸãã«ä»æ§ã§ããïŒ
HTMLä»æ§ã¯ã<script>ã¿ã°å
ã§æå¹ãªæåã·ãŒã±ã³ã¹ã®äœ¿çšãçŠæ¢ããããšã«å ããŠãããããHTMLå
ã§ãšã¹ã±ãŒãããæ¹æ³ãæäŸããŠããŸããããŸãã次ã®ããšãæšå¥šããŸãã
ãã®ã»ã¯ã·ã§ã³ã§èª¬æããå¥åŠãªå¶éãåé¿ããæãç°¡åã§å®å
šãªæ¹æ³ã¯ãåžžã«ã<ïŒ-ããã<\ïŒ-ããã<scriptããã<\ scriptããã</ scriptããšããŠãšã¹ã±ãŒãããããšã§ãã "as" <\ / script "ãããã®ã·ãŒã±ã³ã¹ãã¹ã¯ãªããå
ã®ãªãã©ã«ïŒããšãã°ãæååãæ£èŠè¡šçŸããŸãã¯ã³ã¡ã³ãïŒã«çŸãããšããããã³åŒã§ãã®ãããªæ§é ã䜿çšããã³ãŒãã®èšè¿°ãé¿ããããã
ãåžžã«ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ããšããŠç¿»èš³ã§ãããã®<!--
ãasã <\!--
ããã <script
"as" <\script
"ããã³" </script
"as" <\/script
" ã¹ã¯ãªããå
ã®æååãªãã©ã«ã«å«ãŸããŠãããã³ãŒãèªäœã§ã¯ãããã®åŒãé¿ããŸãã ãã®å§åã¯ç§ãæåãããŸãã ããã§ã¯ãããã€ãã®çŽ æŽãªä»®å®ãäžåºŠã«è¡ãããŸãã
- åã蟌ã¿ã¹ã¯ãªããïŒããã¯å¿
ãããJavaScriptã§ã¯ãããŸããïŒã§ã¯ãäžèšã®æåã·ãŒã±ã³ã¹ã¯æååãªãã©ã«å
ã«ããããèšèªæ§æã§ç°¡åã«åé¿ã§ããŸãã
- æååãªãã©ã«ã®åã蟌ã¿ã¹ã¯ãªããã§ã¯ãéç¹æ®æåããšã¹ã±ãŒãã§ããŸãããããã«ãããªãã©ã«ã®å€ã¯å€æŽãããŸããã
- ã¹ã¯ãªãããåã蟌ã人ã¯èª°ã§ãã¹ã¯ãªããã®çš®é¡ãç¥ã£ãŠããããã®æ§æãæ·±ãç解ãããã®æ§é ãå€æŽããããšãã§ããŸãã
ãããŠãæåã®2ã€ã®ãã€ã³ããå°ãªããšãJavascriptã§å®è¡ãããå ŽåãæåŸã®ãã€ã³ãã¯ããã§ãå®è¡ãããŸããã HTMLã«ã¹ã¯ãªãããæ¿å
¥ããã®ã¯åžžã«è³æ Œã®ãã人ã§ã¯ãªããäœããã®HTMLãžã§ãã¬ãŒã¿ãŒã§ããå¯èœæ§ããããŸãã ãã©ãŠã¶èªäœããããåŠçã§ããªãæ¹æ³ã®äŸã次ã«ç€ºããŸãã
var script = document.createElement('script') script.innerText = 'var s = "</script><script>alert(\'whoops!\')</script>"'; console.log(script.outerHTML); >>> <script>var s = "</script><script>alert('whoops!')</script>"</script>
ã芧ã®ãšãããã·ãªã¢ã«åãããèŠçŽ ãæã€è¡ã¯ãå
ã®èŠçŽ ã«äŒŒãèŠçŽ ã«è§£æãããŸããã äžè¬çãªå Žåã®å€æDOMããªãŒâHTMLããã¹ãã¯ãäžæã§ã¯ãªããå
ã«æ»ããŸããã äžéšã®DOMããªãŒã¯ãåã«HTMLãœãŒã¹ããã¹ããšããŠè¡šãããšãã§ããŸããã
åé¡ãåé¿ããæ¹æ³ã¯ïŒ
æ¢ã«ç解ããŠããããã«ãJavascriptãHTMLã«å®å
šã«æ¿å
¥ããæ¹æ³ã¯ãããŸããã ãã ããJavascriptãHTMLã«å®å
šã«åã蟌ãæ¹æ³ã¯ãããŸãïŒéããæããŠãã ããïŒã 確ãã«ããã®ãããç¹ã«ãã³ãã¬ãŒããšã³ãžã³ã䜿çšããŠããŒã¿ãæ¿å
¥ããå Žåã¯ã<script>ã¿ã°å
ã«äœããèšè¿°ããŠããéã¯åžžã«éåžžã«æ³šæããå¿
èŠããããŸãã
ãŸããæååãªãã©ã«ã§ã¯ãªãããœãŒã¹ããã¹ãå
ã®æå[<!-- <script>]
極端ã«å°ããå¯èœæ§ïŒçž®å°åŸã§ãïŒã ããªãèªèº«ããã®ãããªããšãæžãããšã¯ãŸããããŸãããæ»æè
ã<script>ã¿ã°ã«äœããçŽæ¥æžãããšãã§ããå Žåããããã®æåã®å°å
¥ã¯æåŸã«ããªããæ©ãŸãã§ãããã
æååã«æåãåã蟌ãåé¡ãæ®ã£ãŠããŸãã ãã®å Žåãä»æ§ã«æžãããŠããããã«ãå¿
èŠãªããšã¯ããã¹ãŠã®ã <!--
ããã <\!--
ããã <script
ããã <\script
ããããã³ã </script
ããã <\/script
"ã ããããåé¡ã¯ã JSON.stringify()
ã䜿çšããŠäœããã®æ§é ãåºåããå Žåããã¹ãŠã®æååãªãã©ã«ãèŠã€ããŠãã®äžã®äœããã¹ã¯ãªãŒãã³ã°ããããã«ãåŸã§åã³è§£æããããªããšããããšã§ãã ãŸããç¶æ³ãç°ãªãããããã®åé¡ããã§ã«èæ
®ãããŠããã·ãªã¢ã«åã®ããã«ä»ã®ããã±ãŒãžã䜿çšããããšã¯ãå§ãããŸããããåžžã«èªåèªèº«ãå®ããããã解決çã¯æ®éçã§ãªããã°ãªããŸããã ãããã£ãŠãæå/ããã³ïŒããšã¹ã±ãŒãããããšããå§ãããŸãã ã·ãªã¢ã«ååŸã«ããã¯ã¹ã©ãã·ã¥ã䜿çšããŸãã ãããã®æåã¯ãè¡å
ãé€ããŠJSONã§èŠã€ããããšãã§ããªããããåçŽãªçœ®æã¯çµ¶å¯Ÿã«å®å
šã§ãã ããã«ãããæåã·ãŒã±ã³ã¹ã <script
ãã¯å€æŽãããŸããããåç¬ã§çºçããŠãå±éºã§ã¯ãããŸããã
<script> window.__INITIAL_STATE__ = <%- JSON.stringify(initialState).replace(/(\/|\!)/g, "\\$1") %>; </script>
åæ§ã«ãåã
ã®è¡ããšã¹ã±ãŒãã§ããŸãã
ãã1ã€ã®ãã³ãã¯ã<script>ã¿ã°ã«ã¯äœãåã蟌ãŸãªãããšã§ãã ããŒã¿ãæ¿å
¥ããå€æãæ確ã§å¯éçãªå Žæã«ããŒã¿ãä¿åããŸãã ããšãã°ãä»ã®èŠçŽ ã®å±æ§ã 確ãã«ãããªãæ±ãèŠããæååã§ã®ã¿åäœããŸããJSONã¯åå¥ã«è§£æããå¿
èŠããããŸãã
<var id="s" data="surprise!</script><script>alert("whoops!")</script>"></var> <script> var s = document.getElementById('s').getAttribute('data'); console.log(s); </script>
ããããè¯ãæ¹æ³ã§ããã¡ãããã¢ããªã±ãŒã·ã§ã³ãéåžžã©ããã«éçºããå°é·åãæ
éã«æ©ããªãå Žåã¯ãHTMLã«ã¹ã¯ãªãããåã蟌ãä¿¡é Œã§ããæ¹æ³ãå¿
èŠã§ãã ãããã£ãŠãå®å
šã§ã¯ãªãããã<script>ã¿ã°ãå®å
šã«æåŠããæ£ããå€æãæ€èšããŸãã
<safescript>ã¿ã°
åã蟌ã¿ã¹ã¯ãªããã䜿çšããªãå ŽåãäœãããŸããïŒ ãã¡ããããã¹ãŠã®ã¹ã¯ãªãããå€éšããæ¥ç¶ããããšã¯ãªãã·ã§ã³ã§ã¯ãããŸãããHTMLããã¥ã¡ã³ãå
ã«ããŒã¿ãæã€äœããã®JavascriptããããšäŸ¿å©ãªå ŽåããããŸããäœåãªHTTPãªã¯ãšã¹ãã¯ãªãããµãŒããŒåŽã§è¿œå ã®ã«ãŒããäœæããå¿
èŠã¯ãããŸããã
ãããã£ãŠãæ°ããã¿ã°ãå°å
¥ããããšãææ¡ããŸã-<safescript>ããã®ã³ã³ãã³ãã¯éåžžã®HTMLã«ãŒã«ã«å®å
šã«åŸã-HTMLãšã³ãã£ãã£ã¯ã³ã³ãã³ãããšã¹ã±ãŒãããããã«åäœããŸã-ãããã£ãŠãã¹ã¯ãªãããåã蟌ãããšã¯çµ¶å¯Ÿã«å®å
šã§ãã
<safescript> var s = "surprise!</script><script>alert('whoops!')</script>"; </safescript> <safescript> var a = 'Consider this string: <!--'; var b = '<script>'; </safescript>
ãã©ãŠã¶ã§ãã®ã¿ã°ãå®è£
ãããã®ãåŸ
ã€å¿
èŠã¯ãããŸããã ããã«äœ¿çšã§ããéåžžã«ã·ã³ãã«ãªã»ãŒãã¹ã¯ãªããã®èŠªåãäœæããŸããã ããã«å¿
èŠãªãã®ã¯æ¬¡ã®ãšããã§ãã
<script type="text/javascript" src="/static/safescript.js"></script> <style type="text/css">safescript {display: none !important}</style>
<safescript>å
ã®ã³ãŒãã¯ãã²ã©ããŠç°åžžã«èŠããŸãã ããããããã¯HTMLèªäœã«å
¥ãã³ãŒãã§ãã 䜿çšãããã³ãã¬ãŒããšã³ãžã³ã§ãã¿ã°ãæ¿å
¥ãããã®ãã¹ãŠã®ã³ã³ãã³ãããšã¹ã±ãŒãããåçŽãªãã£ã«ã¿ãŒãäœæã§ããŸãã Djangoãã³ãã¬ãŒããšã³ãžã³ã®ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
{% safescript %} var s = "surprise!</script><script>alert('whoops!')</script>"; {% endsafescript %} {% safescript %} var a = 'Consider this string: <!--'; var b = '<script>'; {% endsafescript %}
ãã®ã¢ãããŒãã«ãããJavascriptãšã¹ã±ãŒããå¿ããå€ãã®è匱æ§ãåé¿ã§ããŸãã ãããŠãHTMLä»æ§ãéçºããŠãã人ãã¡ããã®ãããªã¹ã¯ãªãããããŒã¹ã»ããã«è¿œå ããããHTMLã§ã®ã¹ã¯ãªããã®å®å
šã§ãªãåã蟌ã¿ã®åé¡ã解決ããä»ã®æ¹æ³ãæãã€ãããçŽ æŽãããã§ãããã