element.innnerHTMLのscriptタグの処理とXSS
どうもshuu_miyakoです。
最近徳丸本を見返していた時に、dom型XSSのページに当時書いたこんなメモを見つけました。
「なんでimg要素でXSS発生するのに、script要素だと発生しないの?」
徳丸本の中ではinnerHTMLによるDOM Based XSSの章ではフラグメントに挿入するコードとしてimg要素でonnerrorでaler文を発生させるものを例にあげています。
実際にscript要素使用した場合は発生しなかったので、自分は上記のようなメモを残したのでしょう。
ではなぜinnerHTMLにscript要素を挿入してもalert文が発生しないかと言うと、仕様上そうなっているからです。
なんとなく納得しづらいかと思いますが、そういうものらしいです。
このことは実は徳丸本でも該当箇所の2ページ後にも記載があります。
自分は3分ぐらい納得できませんでしたので、公式ドキュメントとかないかなと探してみました。
そうしたら普通にありました。
①MDN web Docs
※画像中盤の赤枠内
②W3CWorkingDrafit
※画像下部の赤枠
そんな感じでDom型XSSの検査でscript要素を挿入してもJavaScriptは実行できない時があるよというお話でした。
では、また。