Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln
Objekte ohne Überraschungen zusammenführen, Prototype Pollution vermeiden und Daten mit Object.freeze und Object.seal schützen
Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Warum sicher zusammenführen?
Ziel: Daten sicher zusammenführen und den Zustand schützen.
- Flaches Zusammenführen mit spread oder Object.assign
- Vermeiden Sie Prototype Pollution, indem Sie Schlüssel filtern
- Verwenden Sie Object.create(null) als sichere Zielobjekte
- Verwenden Sie freeze und seal, um Objekte zu sperren

Flaches Zusammenführen (spread)
Verwenden Sie spread (oder Object.assign({}, a, b)), um ein neues Objekt zu erstellen; verändern Sie die Eingaben nicht.
// Shallow merge with spread keeps sources unchanged
const a = { x: 1, y: 2 };
const b = { y: 9, z: 3 };
// Later keys win on conflicts
const merged1 = { ...a, ...b };
console.log("a:", a);
console.log("b:", b);
console.log("merged1:", merged1);

Prototype Pollution vermeiden
Wenn Schlüssel von außerhalb stammen, erstellen Sie eine kleine Allowlist/Blocklist und verwenden Sie Object.create(null) als Ziel.
// Avoid prototype pollution: use a null-prototype target and skip special keys
function safeMergeUntrusted(pairs) {
// target has no prototype
const out = Object.create(null);
// keys to skip
const BLOCK = new Set(["__proto__", "prototype", "constructor"]);
for (const [k, v] of pairs) {
if (typeof k !== "string") continue;
if (BLOCK.has(k)) continue;
out[k] = v;
}
return out;
}
const inputPairs = [
["name", "Ayla"],
["__proto__", { hacked: true }],
["role", "user"]
];
const safe = safeMergeUntrusted(inputPairs);
console.log("safe.name:", safe.name);
console.log("safe.role:", safe.role);
console.log("safe.__proto__ is undefined?", safe.__proto__ === undefined);

Klonieren und zuweisen
Object.assign({}, ...) ist ein sicheres Muster, das Anfänger leicht lesen können.
// Object.assign can also create a new object
const base = { a: 1, b: 2 };
const patch = { b: 5 };
// New object as first arg → sources untouched
const merged2 = Object.assign({}, base, patch);
console.log("base:", base);
console.log("patch:", patch);
console.log("merged2:", merged2);

Freeze vs. Seal
freeze verhindert alle Änderungen; seal verhindert das Hinzufügen und Entfernen, erlaubt aber das Aktualisieren vorhandener Eigenschaften.
// Freeze: no add/remove/change
const frozen = Object.freeze({ id: 1, tag: "locked" });
// Seal: no add/remove, but you may change existing values
const sealed = Object.seal({ id: 2, tag: "open" });
// Attempts (silently fail in non-strict mode)
frozen.tag = "new";
sealed.tag = "updated";
sealed.newKey = 123;
console.log("frozen:", frozen);
console.log("sealed:", sealed);

Sichere Gewohnheiten beim Zusammenführen
Tipps:
- Bevorzugen Sie neue Objekte: {...a, ...b} oder Object.assign({}, a, b).
- Bei nicht vertrauenswürdigen Schlüsseln: Verwenden Sie Object.create(null) und überspringen Sie __proto__, prototype und constructor.
- Schützen Sie Konfigurationen mit Object.freeze; sichern Sie Modelle mit Object.seal.

Quiz zu den Grundlagen der Prototype Pollution
Kurzer Test: Sicherstes Zielobjekt für nicht vertrauenswürdige Zusammenführungen.

Zusammenfassung
Zusammenfassung: Führen Sie Daten durch das Erstellen neuer Objekte zusammen, filtern Sie nicht vertrauenswürdige Schlüssel und verwenden Sie freeze/seal, um wichtige Datenstrukturen zu schützen.

Häufig gestellte Fragen
Ist die Lektion „Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln“ kostenlos?
Ja — der vollständige Text von „Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.
Was lerne ich in „Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln“?
Objekte ohne Überraschungen zusammenführen, Prototype Pollution vermeiden und Daten mit Object.freeze und Object.seal schützen Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um JavaScript Academy zu starten?
Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 3.
Wie lange dauert die Lektion „Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?
Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Eingabevalidierung und Grundlagen des Escapens
- Sicheres Zusammenführen von Objekten; Einfrieren und Versiegeln
- Error Boundaries (konzeptionell) ohne Frameworks