Skip to main content

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:

import re
def sanitize_input(data):
# Define a regular expression pattern to match allowed characters
pattern = re.compile("^[a-zA-Z0-9]+$")
# Check if the input matches the pattern
if pattern.match(data) and len(data) <= 100:
# Return the sanitized input
return data
else:
# Raise an error for invalid input
raise ValueError("Invalid input")
# Example usage
user_input = "Hello World!"
try:
sanitized_input = sanitize_input(user_input)
print("Sanitized input:", sanitized_input)
except ValueError as e:
print("Error:", e)

Этот код определяет функцию Python sanitize_input(), которая принимает данные с одним аргументом. Функция использует модуль re для определения шаблона регулярного выражения, который соответствует только разрешенным символам (буквам и цифрам). Затем функция использует метод re.compile() для компиляции шаблона и метод re.match() для проверки соответствия входных данных шаблону. Если входные данные совпадают, функция также проверяет, меньше ли длина данных 100 или равна ей. Если совпадение с образцом и проверка длины успешны, функция возвращает входные данные. Если совпадение с образцом или проверка длины не пройдены, функция выдает ошибку ValueError с сообщением о том, что ввод недействителен. Код также предоставляет пример использования функции sanitize_input(), где строка «Hello World!» передается как пользовательский ввод. В коде используется блок try/except для обработки возможного исключения ValueError, которое может быть вызвано функцией. Если функция вызывает ошибку, код выводит сообщение об ошибке. Если функция возвращает значение, код печатает очищенный ввод.

Additional:#

https://cwe.mitre.org/data/definitions/138.html