こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

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

var value = "何らかの値";
alert("valueは"+value+"です");

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

投稿日時 - 2014-08-27 20:09:40

QNo.8732728

困ってます

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

文字列以外でも代入できるなら保証できません。

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+"です");」
この書き方の方をごちゃごちゃさせなきゃ行けなかったはずなので、普通はセキュリティーホールにはならないと思います。

投稿日時 - 2014-08-27 23:18:55

お礼

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

投稿日時 - 2014-08-28 10:17:24

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

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

投稿日時 - 2014-08-27 21:35:40

お礼

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

投稿日時 - 2014-08-28 10:15:59

-広告-
-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-