как игнорировать исключение ESAPI «org.owasp.esapi.errors.Исключение вторжения: ошибка проверки входных данных»?

#java #owasp #esapi

#java #owasp #esapi

Вопрос:

Мой проект (построенный на JSP, Struts, hibernate) принимает входные данные от пользователя и сохраняет их в базе данных. Для обеспечения безопасности моего приложения я использовал ESAPI jar.

Я получаю исключение

org.owasp.esapi.errors.Исключение вторжения: ошибка проверки входных данных

в методе ESAPI.encoder().canonicalize();

Это исключение обычно возникает, когда мы копируем и вставляем данные из skype, MS word и т.д.

Когда я копирую вставленную строку из skype messenger, она автоматически добавляет дополнительные данные стиля с div, meta, p и т.д. (все HTML-теги), Что приводит к добавлению многих специальных символов, которые могут вызывать исключение, упомянутое выше.

Но когда я копирую строку из notepad, она не выдает исключения.

Как я могу игнорировать это исключение, чтобы я мог добавить данные? нужно ли что-то изменить в ESAPI.properties или validation.properties? каковы ваши взгляды?

Ответ №1:

Я думаю, что ваша странная проблема связана с дополнительной кодировкой, когда вы вставляете что-то из (скажем) MS Word, а не из чего-то простого, например, блокнота. Когда вы находитесь в Word, он получает некоторые дополнительные метаданные, и по умолчанию «вставить» из «MS Word» действительно «вставить специальный». Это сделано для того, чтобы вы могли скопировать текст из одного приложения Office в другое (например, Word в Outlook) и «сохранить форматирование». Я думаю, что все эти дополнительные метаданные, которые вы получаете, сбивают вас с толку, потому что, вероятно, ESAPI выглядит так, будто он мультикодирован или он думает, что используется смешанная кодировка.

Тем не менее, если вы хотите выполнить проверку, вам действительно следует использовать один из методов Validator.isValidInput() или Validator.getValidInput(). Это вызывает Encoder.canonicalize() по умолчанию (если вы не используете последнюю версию ESAPI из ветки ‘develop’, где вы можете фактически отключить канонизацию — недавнее исправление ошибки).

-кевин