Устранение уязвимости межсайтового скриптинга в Java с использованием OWASP

Я работаю над устранением проблем межсайтового скриптинга в java. Так как я новичок в OWASP, кто-нибудь может помочь мне разобраться, как использовать OWASP в следующих случаях для очистки входных данных.

  1. Enumeration<String> EnumHeader = request.getHeaderNames();

  2. Map<String, String[]> pMap = request.getParameterMap();

  3. Object value = request.getHeader(key);

  4. String[] refs = (req.getParameterValues(REFS_NAME));

3 ответа

Решение

Хотя проверка данных может быть очень полезна для предотвращения XSS, она не обязательно охватывает все основы для постоянного XSS. Единственная 100% эффективная защита - это правильная контекстная кодировка вывода, предлагаемая OWASP Java Encoder Project или OWASP ESAPI Encoder. Одна из причин этого заключается в том, что для постоянного XSS испорченные данные могут поступать из БД, которая может быть введена или изменена другим приложением, имеющим доступ для вставки / обновления к тем же таблицам БД, но НЕ выполняющим надлежащую проверку данных. (То есть испорченные данные могут поступать в вашу систему не так, как через ваше приложение.) Таким образом, единственное надежное решение - сделать правильную контекстную кодировку вывода. Шпаргалка по профилактике OWASP XSS, на которую вы уже указали, - отличное место для начала, которое объясняет все это.

Вы можете использовать библиотеку ОС для очистки этих строк / объектов.

Библиотека примеров: https://finn-no.github.io/xss-html-filter/

Затем для этих коллекций заголовков и параметров вы можете выполнить итерацию по ним, используя потоки Java 8, и сопоставить их с новыми отфильтрованными коллекциями (которые используют библиотеку sanitizer).

Межсайтовые сценарии можно исправить, закодировав параметр, а также проверив параметр с помощью настраиваемого регулярного выражения.

Например: Encode.forhtml(inputparam)

Существует несколько типов кодирования на основе контекста с использованием кодировщика OWASP. если вы не уверены в кодировщике или шаблоне проверки, попробуйте приведенный ниже валидатор межсайтовых сценариев, чтобы убедиться, что подход к исправлению работает (правильно).

Валидатор XSS для Java: http://fixforscrossite.us-east-2.elasticbeanstalk.com/

Другие вопросы по тегам