Повишаване на сигурността при използване на 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 на висока степен на сигурност за интернет зоната (или избиране на персонализиран и деактивиране на Active Scripting). Ако винаги контролирате машината, от която се зарежда вашето приложение, тогава ръчното деактивиране на скриптове в опциите на Internet Explorer може да бъде жизнеспособно решение.

Повечето интернет заплахи от страна на клиента, като например изтегляния по пътя, включват скрипт по някакъв начин, така че този подход ще допринесе много за защитата на вашето приложение.

Съществуват обаче и други експлойти, като например уязвимост на Windows Metafile, която може да навреди на клиентска машина.

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

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

person SilverlightFox    schedule 15.01.2014
comment
Изпълнение на вашето приложение на изолирана машина (или виртуална машина), която след това ще качи екранната снимка на друг сървър (напр. чрез мрежата) - това е фантастично предложение. След като прочетох коментара ви, изглежда, че може да си струва просто да платите за API за екранна снимка на уебсайт, за да избегнете тези уязвимости - Zero-Day атаките винаги ще бъдат проблем. - person drewness; 16.01.2014