проверка входных данных
2 статей с этим тегом
Небезопасная десериализация: чем опасно, когда внешние данные выбирают тип объекта, и как это предотвратить
Опасность десериализации не в том, что приходят плохие значения, а в том, что некоторые форматы позволяют внешним данным решать, объект какого типа создать. Поэтому ущерб не ограничивается испорченными данными: OWASP называет отказ в обслуживании, обход контроля доступа и удалённое выполнение кода. Две защиты: перейти на чистый формат данных, где ничто не выбирает типы за вас, и подписывать сериализованные сообщения, чтобы неподписанные никогда не восстанавливались. А некоторые механизмы вообще нельзя сделать безопасными настройкой — единственное решение не использовать их.
Загрязнение прототипа в Node.js: что не закрывает среда выполнения и как защитить свой код
Загрязнение прототипа происходит, когда специальный ключ из внешних данных доходит до встроенных прототипов JavaScript, обычно через рекурсивное слияние. Два последствия: повсюду появляются свойства, которые вы не задавали (ломаются проверки прав и настроек), или исчезают встроенные методы, и приложение падает в несвязанном месте. Важнее всего вопрос ответственности: Node.js прямо пишет, что это не уязвимость ядра Node.js и что защищаться нужно на уровне приложения и зависимостей. Обновление это не исправит.