-
ID:kjqHe1 さんの質問

<img src="" onerror="alert(’xss’)">
のようなデータと
<img src="sample.png">
のようなデータがあったとしまして、
JavaScriptでこのデータを画像としてブラウザに表示したいという要件の時に、
innerHTMLとかで表示しようとするとXSSだと思うのですが、
textContentで処理すると文字列として処理されてしまうので、
画像が表示されないので要件を満たせないのですが、
このような場合、どのような実装をするのが望ましいのでしょうか?
画像があったら画像を表示しつつ、XSS対策は行いたいと思っております。

みんなの回答 3 件

ID:uk1h0j さんの回答

そこでjQuery&Ajaxの出番です

ID:W83AaJ

jQueryでどう解決するんだろう。。

ID:MAvxbM さんの回答

恋人が血まみれ
笑うだけのサンタクロース

ID:HLP3dJ さんの回答

不特定の文字列(特にユーザー入力を伴うもの)をそのままhtml/script化することに脆弱性(XSS)があるのであって、imgにsrcを設定して特定の場所に差し込むこと自体に問題はないでしょ。それが出来なかったら何もできないじゃん。

ID:W83AaJ

その不特定多数のデータの取り扱い方を伺いたいです。

ID:HLP3dJ

え?まじで訊いてるの?
「そもそも不特定のデータを扱わない」「不特定のデータを特定データに変換する」のどっちかしかないじゃん。おすすめはどう考えても「そもそも不特定のデータを扱わない」だよ。

ID:W83AaJ

その特定データに変換する方法を伺いたいんですよね。質問のデータだった場合に。

ID:HLP3dJ

onerrorが問題になってるなら、onerrorを消せばいいだけだと思うし、もっと言えば、画像出力に最低限必要なのはsrcだけだから、srcの情報だけを文字列化すれば必然的に危険な文字列は最低限除外できるってころまでは理解できる?
もしくは、もっとぜんぜん違う問題があるの?
ごめん、言ってる意味がぜんぜんわかんない。

ID:W83AaJ

そのonerrorとかonmouseoverとか他にもXSSになりうる文字列を考慮してどうやって消してるのかを伺いたいんですよね。

ID:HLP3dJ

消すとか消さないとか言ってるけどさ、既に書いたとおり、画像出力に必要なのはsrcの情報、いわゆるパス情報だけだから、「それだけを抽出」すればいいんだよ。もし、onerrorとかonmouseoverの中身がXSSとなりうるかどうかを判別しようとしてるなら、それはかなりずれた発想だぞ。

最終更新日:2016-12-19 (3,000 views)

関連するトピックス

ページ上部に戻る