Укрепление межсайтовых сценариев: постоянная проблема в Response.Binarywrite - PullRequest
0 голосов
/ 22 марта 2019

В существующем приложении Asp.Net мы используем Response.BinaryWrite для визуализации изображения на странице aspx. Это требуемая функциональность, ниже приведен код C # -

1. byte[] img = getImage();
2. Response.BinaryWrite(img);

Функция getImage читает изображение из папки на сервере и возвращает байтовый массив. Сканирование Fortify показывает уязвимость между сайтами на 2-й строке.

Я выполнил следующие проверки, но fortify по-прежнему сообщает об этом как о проблеме с несколькими сайтами -

  1. Проверено bytearray для проверки правильности формата файла (jpeg или bmp), использовала эту ссылку - Определите тип файла изображения

    Response.BinaryWrite (ValidateFileType (IMG));

  2. Подтвержден домен в пути к файлу, чтобы проверить, исходит ли файл из правильного домена.

Существует ли какой-либо конкретный способ решить проблему межсайтового укрепления с помощью байтового массива или я могу считать его ложноположительным?

1 Ответ

0 голосов
/ 09 апреля 2019

Пришлось использовать обходной путь для решения этой проблемы, ниже приведен старый и новый код -

Старый код -

1. byte[] byteImage = getImage();
2. Response.BinaryWrite(byteImage);

Новый код (заменена 2-я строка в старом коде блоком ниже)) -

byte[] byteImage = getImage();
var msIn = new MemoryStream(byteImage);
System.Drawing.Image img = System.Drawing.Image.FromStream(msIn);

var msOut = new MemoryStream();
img.Save(msOut, img.RawFormat);
Response.BinaryWrite(msOut.ToArray());

msIn.Dispose();
msOut.Dispose();
Response.Flush();

Итак, в основном преобразование byteArray в объект Image, а затем запись объекта изображения обратно в поток Response.BinaryWrite разрешили это, и оно прошло через сканирование Fortify.Если кто-то ищет решение, это может помочь.

...