JavaScript · Senior · Запитання 33 з 75

Чим небезпечна функція глибокого злиття об'єктів із користувацького JSON?

merge({}, JSON.parse('{"__proto__": {"isAdmin": true}}'));

Пояснення

Наївне злиття присвоїть target.__proto__.isAdmin = true, і ({}).isAdmin стане true в усьому застосунку. Захист: пропускати __proto__, constructor, prototype, використовувати Object.create(null) або Map для словників, валідувати вхід схемою.

Де почитати

Помилка в запитанні

JavaScript · Senior · запитання 33

Перевірте себе

Пройдіть тест JavaScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест