• ベストアンサー

JavaScriptのクロスサイトスクリプティング

var value = "何らかの値"; alert("valueは"+value+"です"); 上記のように、alert()の引数にどんな値のvalueを入れても、XSSが起こらないと保証できますか? 例えば、doucment.write("valueは"+value+"です");なら、valueの値によってはXSSが起こせますよね?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

文字列以外でも代入できるなら保証できません。 value = { toString: function(){ alert('hoge'); return '何らかの値'; } }; alert("valueは"+value+"です"); doucment.write("valueは"+value+"です"); str = "valueは"+value+"です"; .toString()の代わりに.prototype.valueOf()を使ってもいいかもしれません。 valueに代入できる物を文字列に限定するなら、 value = 'alert("hoge")'; eval() を使わずにスクリプトとして実行させる方法があったはずですが、 「alert("valueは"+value+"です");」 この書き方の方をごちゃごちゃさせなきゃ行けなかったはずなので、普通はセキュリティーホールにはならないと思います。

newtgecko
質問者

お礼

valueが文字列以外ならの場合は考えていませんでした。なるほどです。ご回答有難うございました。

その他の回答 (1)

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.1

alertの実装にもよりますが一般的には保証できます。 ただし勿論その「何らかの値」の部分の埋め込み方に問題があったりする可能性はあります。

newtgecko
質問者

お礼

ご回答ありがとうございます。大丈夫そうで良かったです

関連するQ&A