Код Middle Инъекции: SQL, NoSQL, команды обновлено
Очистка фильтра MongoDB от операторов
Условие
Напишите sanitize(value), которая защищает фильтр MongoDB от инъекции операторов. Функция возвращает глубокую копию значения, в которой из всех объектов (на любой глубине, в том числе внутри массивов) удалены ключи, начинающиеся с $ или содержащие точку. Примитивы и null возвращаются как есть. Исходный объект не меняется.
Примеры
sanitize({"email":"a@b.ru","password":{"$ne":null}}) // {"email":"a@b.ru","password":{}}
sanitize({"email":"a@b.ru","password":"secret"}) // {"email":"a@b.ru","password":"secret"}
sanitize({"$where":"sleep(1000)","name":"x"}) // {"name":"x"}
Как подойти
Подсказки: 2
- Рекурсия по трём случаям: массив, объект, примитив.
- Помните, что
typeof null === "object".
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.