Im folgenden Video, zum Zeitpunkt 21:40, sagt der Microsoft PDC-Präsentator, dass es wichtig ist, dass alle JSONs verpackt werden, damit es sich nicht um ein Array der obersten Ebene handelt:
https://channel9.msdn.com/Events/PDC/PDC09/FT12
Was ist das Risiko eines unverpackten Top-Level-Arrays?
Wie soll ich überprüfen, ob ich verwundbar bin? Ich kaufe viele Komponenten von Drittanbietern und habe externe Anbieter, die meinen Code entwickeln.
quelle
Ich denke, das liegt daran, dass der Array () -Konstruktor neu definiert werden kann. Dieses Problem betrifft jedoch nicht nur Arrays.
Ich denke, der Angriff (oder ein möglicher Weg) ist ungefähr so:
function Array(n) { var self = this; setTimeout(function() { sendToEvilHackers(self); }, 10); return this; }
Der Browser (oder einige Browser) verwenden diesen Konstruktor für die
[n, n, n]
Array-Notation. Ein CSRF-Angriff kann daher Ihre offene Sitzung mit Ihrer Bank ausnutzen, eine bekannte JSON-URL mit einem<script>
Tag abrufen, um sie abzurufen, und dann Ihren Besitz verlieren .quelle
{"d":[1,2,3]}
wäre genauso anfällig wie eine Rückkehr[1,2,3]
.{
am Anfang einer Zeile in JavaScript wird als Codeblock und nicht als Objektliteral interpretiert. Daher ist Ihr{"d":[1,2,3]}
Skript nicht gültig und wird vom Browser nicht ausgeführt.