javascript / expert
Snippet
Bereinigen von serverseitig gerendertem Svelte-Zustand gegen Prototype Pollution
Das Deserialisieren nicht vertrauenswürdiger JSON-Nutzlasten für die Svelte-SSR-Hydratisierung kann Anwendungen f��r Prototype Pollution öffnen. Die Verwendung eines benutzerdefinierten JSON-Revivers mit Reflect.deleteProperty entfernt gefährliche Schlüssel während des Parsens, während Object.freeze spätere Laufzeitmutationen verhindert.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
export function safeDeserializeState(jsonPayload) {return JSON.parse(jsonPayload, (key, value) => {if (key === '__proto__' || key === 'constructor' || key === 'prototype') {Reflect.deleteProperty(value, key);return undefined;}return Object.freeze(value);});}
svelte
Erklärung
1
return JSON.parse(jsonPayload, (key, value) => {
Startet das JSON-Parsing mit einer Reviver-Funktion zur Auswertung aller Schlüssel-Wert-Paare.
2
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
Prüft auf spezielle Eigenschaftsnamen, die häufig bei Prototype-Pollution-Angriffen ausgenutzt werden.
3
Reflect.deleteProperty(value, key);
Entfernt gefährliche Schlüssel direkt aus dem geparsten Objekt vor der Zuweisung.
4
return Object.freeze(value);
Friert den deserialisierten Objektknoten ein, um unbefugte dynamische Objekterweiterungen zu verhindern.