2

わかりました、私は非常に単純な方法から始めます:

alert(someText);

「someText」は、ユーザーがフォームによって値を渡す変数です。ユーザーが次のテキストを渡し、Javascript にコードを挿入する可能性はありますか? たとえば、ユーザーはこのメソッドでこれを渡すことができます:

"別のテキスト"); alert("次のテキスト"

もしそうなら、どうすればそれを防ぐことができますか?そうでない場合、誰かが javascript に関するセキュリティ上の懸念について言及できますか?

4

4 に答える 4

7

いいえ、そうはいきません。文字列値は、使用されている場所で置換されず、単に文字列として使用されます。したがって、セキュリティ上の問題はありません。

これについて心配する必要があるのは、次を使用する場合だけですeval

eval("alert(\" + someText + "\");");

(はい、これは不自然な例だと思います...)

于 2009-08-01T18:30:48.387 に答える
4

基本的に、「eval」(またはそれを行う関数) を呼び出しておらず、ユーザーから作成された Javascript を (script タグを介して) ページに直接挿入していない限り、何も心配する必要はありません。約。

于 2009-08-01T18:32:47.977 に答える
2

javascript 内に変数があると、eval を実行するか、それを使用して DOM 要素の innerHTML プロパティを設定しない限り、あまり問題になりません。

それとは別に、インジェクションの可能性があるかどうかは、フォームから JavaScript に値を取得する方法によって異なります。

たとえば、フォームがサーバーに送信され、変数の値がサーバー側で JavaScript を記述して設定されている場合、問題が発生する可能性があります。このようなものは、明らかにスクリプトをインジェクションのために開いたままにします。

var someText = "<?php echo $_POST["someText"]; ?>";

そのため、フォームからどのように値を取得しているかを知らずに、セキュリティ上の問題が発生する可能性があるかどうかを判断するのは困難です。私の経験では、サーバー側のコードがほとんどの XSS ベクターの原因です。JavaScriptに関しては、通常、evalとinnerHTMLを監視するだけです。

于 2009-08-01T22:40:06.420 に答える
0

JSP、velocityなどのサーバーで「someText」をレンダリングすると危険です

例えば

<script>
  alert({{someText}})
</script>

次に JavaScript 実行前、HTML 解析中、危険です

しかし、「sometext」が JavaScript 変数の場合、@Zifre の答えは正しいです。

また、"eval" キーワードを除いて、new Function(sometext)、 location.href= sometext ...... はいくつかの攻撃を引き起こす可能性があります

于 2015-07-20T10:30:33.600 に答える