JavaScript · Senior · Frage 33 von 75
Was ist gefährlich an einer Deep-Merge-Funktion, die auf JSON vom Nutzer angewendet wird?
merge({}, JSON.parse('{"__proto__": {"isAdmin": true}}'));- 1Bei beliebigen verschachtelten JSON-Daten läuft der Stack über
- 2Nichts:
JSON.parseentfernt gefährliche interne Schlüssel automatisch - 3Prototype Pollution: die Eigenschaft landet in
Object.prototype
Antwort zeigen
Richtige Antwort: Prototype Pollution: die Eigenschaft landet in Object.prototype
Erklärung
Ein naiver Merge weist target.__proto__.isAdmin = true zu, und ({}).isAdmin wird in der ganzen App true. Schutz: __proto__, constructor, prototype überspringen, für Wörterbücher Object.create(null) oder Map nutzen, Eingaben per Schema validieren.