Protecting agains JSON serialization
by Arnaud Buchholz
TypeScript
const protectAgainstJSONSerialization = <T extends object>(value: T): T => {
Object.assign(value, { toJSON: () => { throw new Error('Forbidden'); } });
return value;
}
const referenceObject = { hello: 'World !' };
console.log(JSON.stringify(referenceObject));
protectAgainstJSONSerialization(referenceObject);
try {
console.log(JSON.stringify(referenceObject));
throw new Error('Unexpected');
} catch (error) {
console.log('Explicit JSON.stringify :', error.message);
}
try {
console.log(JSON.stringify({ object: referenceObject }));
throw new Error('Unexpected');
} catch (error) {
console.log('Nested JSON.stringify :', error.message);
}