Устранение уязвимости межсайтового скриптинга в Java с использованием OWASP
Я работаю над устранением проблем межсайтового скриптинга в java. Так как я новичок в OWASP, кто-нибудь может помочь мне разобраться, как использовать OWASP в следующих случаях для очистки входных данных.
Enumeration<String> EnumHeader = request.getHeaderNames();
Map<String, String[]> pMap = request.getParameterMap();
Object value = request.getHeader(key);
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/