2016-02-12 15 views
2

Я сканирую свое приложение в портале HP fortify и получаю проблему. Межсайтовый скриптинг: плохая валидация (подтверждение ввода и представление, поток данных).Межсайтовые сценарии: плохое подтверждение (подтверждение ввода и представление, поток данных)

Я уже пользуюсь библиотекой ESAPI.

Что мне делать, чтобы решить эту проблему. Есть ли другая библиотека/банка для проверки входных данных.

Заранее спасибо.

+0

Плохо Validation? Устраните это! –

ответ

0

Это происходит, когда вы используете кодировку для предотвращения XSS. Если вы не кодируете, вы получите критический вывод XSS. Поскольку вы кодируете, он перемещается на носитель. Чтобы полностью предотвратить XSS, вы хотели бы использовать надлежащую кодировку, учитывая контекст, а затем убедитесь, что ваши входы проверяются. Есть библиотеки, которые могут помочь, такой Apache Struts Validator, но даже тогда Fortify не сможет точно определить, достаточна ли ваша проверка ввода. Продукты статического анализа не могут определять тип данных внутри переменной, поэтому на самом деле нет хорошего способа проверить правильность проверки. То, что вы хотите сделать, - это подтвердить ввод, и как только вы убедитесь, что поиск удовлетворен кодировкой и проверкой ввода, вы можете подавить вывод.

После того, как вы написали методы проверки, вы можете сохранить их в файле jar и затем написать специальные правила для Fortify, чтобы они знали, что эти методы обеспечивают проверку XSS. Эта проблема не будет возникать при будущих сканированиях. Ознакомьтесь с Правилами очистки потока данных в Руководстве по форматированию пользовательских правил.

+0

Привет, спасибо за помощь – Shruti

0

Fortify отлично разбирается в библиотеках ESAPI, поэтому можете ли вы рассказать мне, какую функцию ESAPI lib вы вызываете при вызове inout и output? вы можете ссылаться на https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet для различного контекста и проверки, которые вы должны использовать для XSS, и на основе контекста, который вам нужен для использования функций ESAPI.

В вашем случае вы используете простую кодировку, которая не является точным решением, поэтому, хотя fortify уменьшает серьезность, но все еще является проблемой, используйте, пожалуйста, правильную функцию ESAPI в источнике и приемнике. Тогда Fortify не должен отмечать проблему. И все же, если вы видите это, создайте собственное правило, как сказано в другом ответе.

+0

Я использовал ESAPI.encoder() для кодирования значения. Правильно ли я иду? – Shruti

+0

жаль было путешествовать, это неверно, вам нужно использовать кодировку в соответствии с вашим контекстом ... Я вижу, что другой пользователь ответил на нее подробно .., который выглядит как идеальное решение. – SecurityNinja

3

Укрепить «Межсайтовые сценарии: неудовлетворительная проверка» жалуется, что ваша кодировка OUTPUT является либо неправильной, либо неэффективной. Цель выходного кодирования (экранирование) состоит в том, чтобы ограничить специальные символы (метасимвол) как литеральную строку, поэтому они не могут быть выполнены как команда.

Для устранения, вы:

Шаг # 1. Определите, кто собирается использовать этот «кодируемый контекст»?

Шаг №2. Правильно Кодировать контекст на основе протокола доставки и потока вниз. Например:

  • Если данные потребляются в части URL, вам нужно найти функцию, чтобы обернуть (ака закодировать, побег) 18 зарезервированные символы (* '() [запрос?];: @ & = + $, /? # []), Которые имеют особое значение для протокола HTTP (необязательно кодировать весь URL). (Читай RFC3986 Sec 2.2 для деталей)
  • Если данные потребляются как XML Entity, вам нужно закодировать 5 метасимволы (& <> "«) (проверить W3C XML Spec Sec 2.4). Но, это не всегда верно.Данные, используемые в качестве комментариев, инструкции по обработке или в разделе CDATA, не обязательно должны быть закодированы.

Шаг № 3. Собирайте примеры кодирования для будущего выбора и использования: (извините, если пост как код, некоторые содержание изменилось, так что отправлять в виде изображения)

необходимо учитывать накладные расходов библиотеки ESAPI, стоит загрузить 30 МБ баночки для одно исправление?
enter image description here

enter image description here

Выходного кодирование с использованием легкого веса org.owasp.encoder библиотеки

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^