V5.2.2 Sanitization and Sandboxing
Requirement:#
Verify that unstructured data is sanitized to enforce safety measures such as allowed characters and length.
Explanation:#
Приложение получает входные данные от вышестоящего компонента, но не нейтрализует и не нейтрализует неправильно специальные элементы, которые могут быть интерпретированы как элементы управления или синтаксические маркеры при отправке в нисходящий компонент.
Входные данные от вышестоящего компонента, не экранирует или неправильно экранирует специальные элементы, которые могут быть интерпретированы как управляющие элементы или синтаксические маркеры, когда они отправляются нижестоящему компоненту.
Remediation:#
- Используйте библиотеку очистки или функцию платформы для проверки ввода и удаления любых символов, тегов или атрибутов, которые не разрешены.
- Убедитесь, что дезинфицирующее средство настроено так, чтобы разрешать только безопасный и корректный ввод, например указанные символы и ограниченную длину.
- Внедрите строгую проверку ввода, чтобы обеспечить соблюдение этих ограничений и защититься от атак путем внедрения или подделки данных.
- Регулярно проверяйте дезинфицирующее средство, чтобы убедиться, что оно работает правильно и эффективно защищает от уязвимостей.
Пример реализации на Python:
Этот код определяет функцию Python sanitize_input(), которая принимает данные с одним аргументом. Функция использует модуль re для определения шаблона регулярного выражения, который соответствует только разрешенным символам (буквам и цифрам). Затем функция использует метод re.compile() для компиляции шаблона и метод re.match() для проверки соответствия входных данных шаблону. Если входные данные совпадают, функция также проверяет, меньше ли длина данных 100 или равна ей. Если совпадение с образцом и проверка длины успешны, функция возвращает входные данные. Если совпадение с образцом или проверка длины не пройдены, функция выдает ошибку ValueError с сообщением о том, что ввод недействителен. Код также предоставляет пример использования функции sanitize_input(), где строка «Hello World!» передается как пользовательский ввод. В коде используется блок try/except для обработки возможного исключения ValueError, которое может быть вызвано функцией. Если функция вызывает ошибку, код выводит сообщение об ошибке. Если функция возвращает значение, код печатает очищенный ввод.