Код: Выделить всё
// Body portion
string postData = JsonConvert.SerializeObject(Body));
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Send the query
webRequest.ContentLength = byteArray.Length;
Stream dataStream = webRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
Но при сканировании с помощью Fortify он жалуется на причину межсайтового сценария: отражено, в строке
Код: Выделить всё
dataStream.Write(byteArray, 0, byteArray.Length);
Рекомендации:
Решением XSS является обеспечение того, чтобы проверка происходила в правильных местах и выполнялись проверки правильных свойств.
Поскольку XSS-уязвимости возникают, когда приложение включает вредоносные данные в свои выходные данные, одним из логических подходов является проверка данных непосредственно перед их отправкой. приложение. Однако, поскольку веб-приложения часто имеют сложный и запутанный код для создания динамического контента, этот метод подвержен ошибкам из-за упущений (отсутствия проверки). Эффективным способом снизить этот риск является также выполнение проверки входных данных для XSS.
Веб-приложения должны проверять свои входные данные, чтобы предотвратить другие уязвимости, такие как внедрение SQL, поэтому дополнить существующий механизм проверки входных данных приложения, включив в него проверки на XSS, как правило, относительно легко. Несмотря на свою ценность, проверка входных данных для XSS не заменяет строгую проверку выходных данных. Приложение может принимать входные данные через общее хранилище данных или другой доверенный источник, и это хранилище данных может принимать входные данные от источника, который не выполняет адекватную проверку входных данных. Поэтому приложение не может неявно полагаться на сохранность этих или любых других данных. Это означает, что лучший способ предотвратить уязвимости XSS — это проверять все, что входит в приложение и оставляет приложение, предназначенное для пользователя.
Самый безопасный подход к проверке XSS — создать белый список безопасных символов, которым разрешено появляться в HTTP-контенте, и принимать входные данные, состоящие исключительно из символов из утвержденного набора. Например, допустимое имя пользователя может содержать только буквенно-цифровые символы, а номер телефона может содержать только цифры 0–9. Однако это решение часто неосуществимо в веб-приложениях, поскольку многие символы, имеющие особое значение для браузера, все равно должны считаться допустимыми входными данными после их кодирования, например, доска объявлений веб-дизайнера, которая должна принимать фрагменты HTML от своих пользователей.
Более гибкий, но менее безопасный подход известен как черный список, который выборочно отклоняет или экранирует потенциально опасные символы перед использованием входных данных. Чтобы сформировать такой список, вам сначала необходимо понять набор символов, которые имеют особое значение для веб-браузеров. Хотя стандарт HTML определяет, какие символы имеют особое значение, многие веб-браузеры пытаются исправить распространенные ошибки в HTML и могут рассматривать другие символы как специальные в определенных контекстах, поэтому мы не поощряем использование черных списков в качестве средства предотвращения XSS. Координационный центр CERT(R) Института разработки программного обеспечения Университета Карнеги-Меллон предоставляет следующую информацию о специальных символах в различных контекстах [1]:
В содержимом элемента уровня блока (в середине абзаца текста):
- "" является особенным, поскольку некоторые браузеры рассматривают его как особый, исходя из предположения, что автор страницы намеревался включить открывающий элемент "
Подробнее здесь: https://stackoverflow.com/questions/563 ... -reflected
Мобильная версия