Открыть сервисСервис

Ошибка валидации

Ошибка валидации — это сообщение или состояние программной системы, возникающее при проверке (валидации) входных данных, если они не соответствуют заданным правилам, формату или ограничениям. Валидация выполняется на этапе ввода, передачи или обработки данных и служит для предотвращения некорректной информации в системе. Ошибка валидации не является сбоем самого приложения в строгом смысле: это штатный механизм обратной связи, сигнализирующий о несоответствии данных требованиям.

Область применения

Термин используется в нескольких смежных областях:

Виды ошибок валидации

По месту обнаружения

ТипОписание
Клиентская (front-end)Выполняется в браузере или приложении до отправки данных на сервер. Реализуется средствами JavaScript, HTML5-атрибутами (required, pattern, min, max).
Серверная (back-end)Выполняется на сервере после получения данных. Считается более надёжной, так как клиентскую проверку можно обойти.

По характеру нарушения

  • Типовая ошибка — значение не соответствует ожидаемому типу (строка вместо числа, невалидный формат даты).
  • Ошибка диапазона — число вне допустимых границ (отрицательный возраст, сумма превышает лимит).
  • Ошибка формата — не соблюдён шаблон (некорректный email, номер телефона, ИНН, серия паспорта).
  • Ошибка обязательного поля — не заполнено поле, помеченное как обязательное.
  • Ошибка ссылочной целостности — ссылка на несуществующий объект (внешний ключ в БД).
  • Ошибка бизнес-правила — данные формально корректны, но нарушают логику предметной области (дата окончания раньше даты начала).

Форматы представления ошибок

Системы валидации сообщают об ошибках в разных формах:

  • Человекочитаемые сообщения — текст на естественном языке, адресованный конечному пользователю («Введите корректный адрес электронной почты»).
  • Машиночитаемые коды — структурированные ответы API. Наиболее распространён формат RFC 9457 (Problem Details for HTTP APIs), описывающий ошибки валидации в REST-сервисах через JSON-объект с полями type, title, status, detail, errors.
  • Журналируемые записи — сообщения для систем мониторинга и логирования.

Стандартные подходы к валидации

Валидация на основе схем

Для описания правил проверки используются схематические языки:

  • JSON Schema — декларативное описание структуры и ограничений JSON-данных. Популярен в REST API.
  • XML Schema (XSD) — валидация XML-документов.
  • OpenAPI Specification — описание параметров и форматов запросов к API, включая правила валидации.

Библиотеки валидации

В разработке широко используются готовые решения:

  • JavaScript/TypeScript: Joi, Yup, Zod, AJV (для JSON Schema), class-validator (для TypeScript-классов с декораторами).
  • Python: Pydantic, Cerberus, Marshmallow, voluptuous.
  • Java: Hibernate Validator, Jakarta Bean Validation.
  • C#/.NET: встроенная система Data Annotations и FluentValidation.
  • PHP: встроенная система валидации Laravel, Symfony Validator.

Декларативный подход

Современные фреймворки (Angular, React Hook Form, Formik) позволяют описывать правила валидации декларативно, отделяя логику проверки от бизнес-логики приложения.

Примеры ошибок валидации

Форма регистрации. Пользователь указал email user@ — сервер отвечает ошибкой валидации с HTTP-статусом 400 (Bad Request) и сообщением о некорректном формате адреса.

REST API. Запрос POST /api/orders с полем quantity: -5 отклоняется, если схема требует minimum: 1. Ответ содержит перечень нарушенных ограничений.

База данных. Попытка вставки записи с NULL в столбец, объявленный как NOT NULL, приводит к ошибке нарушения ограничения целостности (constraint violation).

Импорт данных. Загрузка CSV-файла с колонкой «Дата рождения» в формате 31.02.2020 — несуществующая дата — приводит к ошибке валидации строки.

Рекомендации по обработке

  • Серверная валидация обязательна даже при наличии клиентской.
  • Сообщения об ошибках должны быть конкретными и указывать на поле и причину.
  • Валидация не должна раскрывать внутреннюю структуру системы (типы БД, имена таблиц).
  • Правила валидации целесообразно централизовать, чтобы клиент и сервер проверяли данные одинаково.
  • Ошибки валидации не следует путать с ошибками аутентификации и авторизации: первые касаются формы данных, вторые — прав доступа.

Источники

  • RFC 9457 — Problem Details for HTTP APIs
  • Спецификация JSON Schema (json-schema.org)
  • OWASP Input Validation Cheat Sheet
  • Документация библиотек Zod, Pydantic, Hibernate Validator
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru