Санитизация в контексте Validator.js представляет собой преобразование входных данных к безопасному и предсказуемому виду без изменения их семантического смысла (в отличие от валидации, которая лишь проверяет корректность). Санитайзеры в библиотеке работают преимущественно со строками, хотя часть из них возвращает числовые или булевы типы.
Основная идея заключается в том, чтобы очищать пользовательский ввод от потенциально опасных или избыточных символов, нормализовать формат данных и приводить значения к удобному для дальнейшей обработки виду.
Удаляет пробельные символы в начале и конце строки.
const validator = require('validator');
validator.trim(' hello world ');
// 'hello world'
Используется для нормализации пользовательского ввода, где лишние пробелы часто появляются случайно (формы, копирование текста, мобильный ввод).
Особенность реализации заключается в поддержке дополнительных символов:
validator.trim('---hello---', '-');
// 'hello'
Удаляет символы только в начале строки.
validator.ltrim('***hello***', '*');
// 'hello***'
Часто применяется при обработке префиксов, служебных маркеров или пользовательских тегов.
Удаляет символы только в конце строки.
validator.rtrim('///path///', '/');
// '///path'
Используется для нормализации путей, идентификаторов и форматированных строк.
Преобразует HTML-опасные символы в безопасные сущности.
validator.escape('<script>alert("x")</script>');
// '<script>alert("x")</script>'
Основная задача — предотвращение XSS-атак при выводе
пользовательского контента в HTML-контекст. Символы <,
>, ", ', /
заменяются на соответствующие HTML-сущности.
Важно учитывать, что escape не удаляет содержимое, а только экранирует его.
Обратное преобразование для escape-последовательностей.
validator.unescape('<b>text</b>');
// '<b>text</b>'
Используется реже, так как восстановление исходного HTML может быть небезопасным в веб-контексте. Применяется преимущественно при обработке ранее экранированных данных в серверных системах или при миграции данных.
Приводит email-адрес к каноническому виду с учётом правил почтовых провайдеров.
validator.normalizeEmail('User.Name+tag@gmail.com');
// 'username@gmail.com'
+tagvalidator.normalizeEmail('User.Name+tag@gmail.com', {
gmail_remove_dots: true,
gmail_remove_subaddress: true
});
Преобразует строку в целое число.
validator.toInt('42');
// 42
Игнорируются нечисловые символы после корректного числа:
validator.toInt('42px');
// 42
NaN при невозможности преобразованияПреобразование строки в число с плавающей точкой.
validator.toFloat('3.1415');
// 3.1415
validator.toFloat('10.99abc');
// 10.99
Используется для обработки цен, координат, измерений.
Преобразует строковое значение в булево.
validator.toBoolean('true');
// true
Истинные:
Ложные:
validator.toBoolean('YES', true);
// true (строгий режим)
В строгом режиме допускаются только строго определённые значения.
Преобразует строку в объект Date.
validator.toDate('2025-01-01');
// Date object
Invalid Date при ошибкеУдаляет символы ASCII с кодами < 32 (управляющие символы), кроме табуляции, перевода строки и возврата каретки (в зависимости от конфигурации).
validator.stripLow('hello\u0000world');
// 'helloworld'
validator.stripLow('hello\u0007world', true);
// может сохранить переносы строк
Удаляет все символы, кроме разрешённых.
validator.whitelist('abc123def', 'abc');
// 'abcabc'
Остаются только символы, указанные во втором аргументе.
Удаляет указанные символы из строки.
validator.blacklist('abc123def', '123');
// 'abcdef'
Явное приведение значения к строке.
validator.toString(123);
// '123'
validator.toString(null);
// 'null'
В Validator.js санитайзеры часто используются в цепочке преобразований:
validator.trim(
validator.escape(
validator.toString(input)
)
);
В более прикладном виде:
validator.normalizeEmail(
validator.trim(email)
);
Такая композиция позволяет последовательно очищать и приводить данные к нужному формату перед валидацией или сохранением.
Санитайзеры стремятся к предсказуемому результату:
NaNInvalid DateЭто поведение важно учитывать при построении цепочек обработки данных, особенно в системах с высокой степенью доверия к результату преобразования.