1

いくつかの方法で配列を作成できます。

var myArray = new Array();

または:

var myArray = [];

2 番目の方法は、新しい Array() 構文よりも安全に使用できます。これは、Array コンストラクターが上書きされ、悪意のあるコードに置き換えられる可能性があるためです。

多くの JavaScript の本で上記の行を見てきましたが、Arrayコンストラクターがどのように上書きされ、悪意のあるコードに置き換えられるのか理解できませんか? 問題の現実を理解できるように、誰かがそれを行う方法の例を探しています。

4

2 に答える 2

1

上記のコードのどこかに:

Array.prototype.forEach = function (e){
  console.log("something wrong there");
  return(e);
};

以下のコードのどこかに:

var i = [1,2,3,4,5];
i.forEach(function(e){
  console.log(e);
});

出力:

>"something wrong there"

ご覧のとおり、配列変数の初期化方法に違いはありません。var i = [];表記を短くするだけです。

于 2013-11-27T05:40:38.900 に答える
0

JS コンソールに書き込む場合:

[1,2,3]

(そのように) - あなたはそれで何もできません。

古いブラウザでは正確ではありません。

次の方法で配列 ctor をオーバーロードできます。

Array = new function (){... }

したがって、Json(jsonpではなく)を介して友達リストを取得した場合:-

誰かが XSS/XSF 攻撃を使用して、あなたの友達リストを盗む可能性があります。

ここで重要なことは、[1,2,3] と書くと、実際にここで作業している ctor が存在するということです。

したがって、配列応答を行う Web サイトにアクセスした場合でも、彼はあなたのリストを作成できます。

于 2013-11-27T05:35:41.057 に答える