Повышение безопасности при использовании WebBrowser

Я просмотрел несколько похожих вопросов на SO, но не нашел ничего похожего на то, что мне нужно, поэтому мой вопрос таков:

Я хочу сделать снимок экрана (миниатюру) URL-адреса после того, как пользователь предоставит его. Я собирался использовать Awesomium, потому что они предоставляют довольно простое решение для скриншотов. К сожалению, Awesomium не компилируется в x64-приложении, а поскольку я создаю его с помощью ASP.NET для Windows Azure, я не могу переключиться на x86.

Поэтому у меня осталось менее элегантное решение, использующее Windows.Forms WebBrowser для загрузки URL-адреса и создания снимка экрана (как показано здесь: http://www.codeproject.com/Articles/95439/Get-ASP-NET-C-2-0-Website-Thumbnail-Screenshot).

Некрасиво, я знаю, но это работает с большинством страниц (иногда есть белый скриншот), но теперь я беспокоюсь о безопасности.

Если пользователь вводит вредоносный URL-адрес, и веб-браузер загружает его, что может помешать ему запустить вредоносный код и загрузить вирус на сервер, на котором размещено приложение?

Есть несколько сервисов и веб-сайтов, которые предлагают аналогичные функции, хотя и с разными подходами, но основная идея одна и та же: сайт должен открыть URL-адрес и отобразить страницу, чтобы сделать снимок экрана. Итак, какие меры можно было бы ожидать от них, чтобы помешать вирусам и вредоносным URL-адресам?


person drewness    schedule 14.01.2014    source источник


Ответы (1)


Самой большой угрозой для вашего приложения будет клиентский скрипт, выполняемый в вашем браузере (например, JavaScript и клиентский VBScript). Похоже, невозможно программно отключить JavaScript в объекте WebBrowser:

Удаление тегов <script> в первом ответе первого вопроса не является способом обеспечения безопасности, поскольку существует множество других способов можно вставить.

Изменение window.alert во втором ответе не будет работать, так как сначала требуется полная загрузка страницы, и это возможно для сценария выполнить до этого. Кроме того, это только остановит функцию alert и никаким другим образом не помешает коду скрипта.

Изменение параметров реестра, как предлагается в этом ответе, может быть правильным, но это похоже на изменение настроек Internet Explorer на высокий уровень безопасности для интернет-зоны (или выбор пользовательских и отключение активных сценариев). Если вы всегда контролируете компьютер, с которого загружается ваше приложение, то ручное отключение сценариев в параметрах Internet Explorer может быть жизнеспособным решением.

Большинство интернет-угроз на стороне клиента, таких как загрузка с диска, так или иначе связаны со сценарием, поэтому этот подход будет иметь большое значение для защиты вашего приложения.

Однако существуют и другие эксплойты, такие как уязвимость метафайла Windows, которые могут нанести вред клиентскому компьютеру.

Просмотр веб-сайта в веб-браузере, который автоматически открывает файлы WMF, и в этом случае любой потенциально вредоносный код может быть автоматически загружен и открыт. Internet Explorer, веб-браузер по умолчанию для всех версий Microsoft Windows с 1996 года, делает это.

Тем не менее, убедитесь, что на ваши машины установлены последние обновления Windows, и вы защитите себя от подобных угроз. Это оставит атаки нулевого дня на Internet Explorer или объект WebBrowser, которые вы не в состоянии сделать многое о. Я бы предложил запустить ваше приложение на изолированной машине (или виртуальной машине), которая затем загрузит снимок экрана на другой сервер (например, через Интернет), что поможет смягчить угрозы в этом сценарии.

person SilverlightFox    schedule 15.01.2014
comment
Запуск вашего приложения на изолированной машине (или виртуальной машине), которая затем загрузит снимок экрана на другой сервер (например, через Интернет) — это фантастическое предложение. После прочтения вашего комментария кажется, что, возможно, стоит просто заплатить за API скриншотов веб-сайта, чтобы избежать этих уязвимостей — атаки нулевого дня всегда будут проблемой. - person drewness; 16.01.2014