2014-01-14 5 views
3

Я просмотрел несколько подобных вопросов на SO, но не нашел что-то очень нравится то, что мне нужно, так что мой вопрос заключается в следующем:Повышение безопасности при использовании WebBrowser

Я хочу, чтобы сделать снимок (эскиз) URL-адреса после предоставления пользователем. Я собирался использовать Awesomium, потому что они предоставляют довольно простое решение для screengrabs. К сожалению, 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-адрес, а WebBrowser загружает его, что должно помешать ему запускать вредоносный код и загружать вирус на сервер, на котором размещено приложение?

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

ответ

1

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

Зачистка <script> теги в первый вопрос-х first answer не путь для безопасности, Есть так много других способов сценария может быть вставлен.

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

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

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

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

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

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

+0

«Запуск приложения на изолированной машине (или виртуальной машине), которая затем загружает скриншот на другой сервер (например, через Интернет)» - это фантастическое предложение. После прочтения вашего комментария, кажется, стоит просто заплатить за API скриншотов веб-сайта, чтобы избежать этих уязвимостей - атаки Zero-Day всегда будут проблемой. – drewness

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