Метод stripLow из библиотеки Validator.js предназначен
для удаления низкоуровневых ASCII-символов, которые обычно не
отображаются в тексте и могут использоваться для скрытой передачи
управляющих последовательностей. Такие символы включают в себя
управляющие коды (0–31) и, при необходимости, символ DEL
(127). Основное применение метода — очистка строкового ввода от
потенциально опасных или нежелательных символов перед дальнейшей
обработкой, хранением или валидацией.
Низкоуровневые символы не видны пользователю, но могут влиять на обработку строк в системах:
Метод stripLow используется как слой нормализации
входных данных, особенно в формах, API-запросах и системах
логирования.
stripLow(str, keep_new_lines)
str Строка, которую необходимо очистить от управляющих символов.
keep_new_lines (boolean) Определяет, сохранять ли символы перевода строки:
true — символы \n и \r
сохраняются;false (по умолчанию) — все управляющие символы
удаляются, включая переводы строк.Метод проходит по строке и удаляет символы из диапазона ASCII:
При установке keep_new_lines = true символы:
\n (LF, 10)\r (CR, 13)исключаются из удаления.
Важно учитывать, что метод работает на уровне ASCII-кодов, а не Unicode-графем, поэтому многобайтовые символы (например, кириллица, эмодзи) не затрагиваются.
const validator = require('validator');
const input = "Hello\u0000World\u0007!";
const result = validator.stripLow(input);
console.log(result); // "HelloWorld!"
const input = "Line1\nLine2\r\nLine3\u0003";
const result = validator.stripLow(input, true);
console.log(result);
// "Line1\nLine2\r\nLine3"
const username = validator.stripLow(req.body.username);
В этом случае из имени пользователя удаляются скрытые управляющие символы, которые могут быть вставлены намеренно или случайно при копировании текста.
Использование stripLow снижает риск:
Однако метод не является полноценной защитой от атак и должен использоваться только как часть комплексной обработки входных данных.
Метод не модифицирует Unicode-символы, включая:
Удаляются исключительно управляющие ASCII-коды, что делает метод безопасным для многоязычных систем.
В пользовательских формах метод применяется для нормализации текста перед валидацией длины, формата или сохранением в базу данных.
const comment = validator.stripLow(req.body.comment, true);
При получении внешних данных API может содержать скрытые символы, влияющие на парсинг JSON или сравнение строк.
Перед записью в лог-систему данные очищаются, чтобы предотвратить внедрение управляющих последовательностей:
logger.info(validator.stripLow(message));
escape() — преобразует HTML-символы в сущности;trim() — удаляет пробелы по краям строки;stripLow() — удаляет управляющие символы ASCII;whitelist() — оставляет только разрешённые
символы;blacklist() — удаляет указанные символы.stripLow находится на более низком уровне обработки
текста и применяется до логической валидации содержимого.
Типичная последовательность обработки пользовательского ввода может выглядеть так:
stripLow — удаление управляющих символов;trim — обрезка пробелов;normalize (внешние библиотеки) — приведение
Unicode;Такое разделение позволяет изолировать низкоуровневые шумовые данные от прикладной логики.