190 likes | 401 Views
Принципы безопасной разработки на Silverlight. Михаил Черномордиков Architect Evangelist, Microsoft http://blogs.msdn.com/mikcher mikcher@microsoft.com. Содержание доклада. Угрозы в Сети Same-origin policy XSS CSRF Silverlight и сетевая безопасность Основы работы Silverlight
E N D
Принципы безопасной разработки на Silverlight Михаил Черномордиков Architect Evangelist, Microsoft http://blogs.msdn.com/mikcher mikcher@microsoft.com
Содержание доклада • Угрозы в Сети • Same-origin policy • XSS • CSRF • Silverlight и сетевая безопасность • Основы работы Silverlight • Работа в sandbox • Кросс-доменные запросы • Работа с сокетами
Важность безопасности Источник: secunia.com
Same-origin policy • = site-of-origin policy • Тот же источник = доменное имя, порт • www.testsite.ru, www.testsite2.ru:8080 • Если HTML-страница загружает iframe (или другой объект) с тем же источником, то открыт доступ к DOM-модели другой страницы • HTML-страница может делать HTTP-запросы к источнику (обычно через XmlHttpRequest)
XSS = Cross-Site Scripting • Межсайтовый скриптинг • Запуск кода (обычно JavaScript) от имени атакуемого сервера • Порядка 15% всех обнаруженных уязвимостей* • Основная поверхность атаки – серверная часть • Возможное решение для пользователей – XSS-фильтр в IE8 * Источник: wikipedia.org
CSRF = Cross-Site Request Forgeries • Атакующий сайт делает запрос на атакуемый сервер так, что сервер думает, что это запрос от пользователя • Возможное решение – контрольная сумма • Возможное решение – XDR-запросы в IE8
Содержание доклада • Угрозы в Сети • Same-origin policy • XSS • CSRF • Silverlight и сетевая безопасность • Основы работы Silverlight • Работа в sandbox • Кросс-доменные запросы • Работа с сокетами
Структура Silverlight-проекта Веб-проект,генерируемый Visual Studio для тестирования XAP файл со сборками приложения, библиотеками и ресурсами Тестовая страница HTML Основной проект XAML-файл с глобальными ресурсами и обработчиками событий XAML-файл со страницей, которую видит пользователь
Основы работы Silverlight • Загрузка при инструкции в HTML: • <object type=“application/x-silverlight-3”></object> • XAML • Не содержит код • Может содержать обработчики событий • Нет гарантий по загрузке памяти и ЦП • XAP • Путь указан в source • ZIP-архив • AppManifest.xml • При кросс-доменной загрузке источник = источник XAP-файла
Работа в sandbox • XAP-файл загружается в «песочнице» • Контекст безопасности может не совпадать со страницей • По умолчанию - модель iframe • Если same-origin, взаимодействие со страницей разрешено • Если нет – запрещено • Можно настраивать через параметры • EnableHtmlAccess – доступ к странице • ExternalCallsFromCrossDomain – доступ к XAP
EnableHtmlAccess • По умолчанию false • EnableHtmlAccess = true • Доступ управляемогокода к DOM-модели • Эквивалентно элементу<script> в серединедокумента • Если вредоносный XAP – XSS-уязвимость + чтение cookies + CSRF • Помните, что домен может сменить хозяина • Про безопасность нужно помнить, учитывать, не бояться
ExternalCallersCrossDomain • По умолчанию NoAccess • = ScriptableOnlyоткрывает доступ к [Scriptable]-объектамв коде XAP-файла • Любая HTML-страница может вызывать метод из XAP-файла с домена Х и возможно получить данные из домена Х • Задается в AppManifest.xml
Кросс-доменные запросы • По умолчанию доступ из Silverlight-приложений с других доменов запрещен • Его можно разрешить явным образом – файл clientaccesspolicy.xml • Есть поддержка crossdomain.xml • Советы по безопасности: • Используйте статические ресурсы • Не используйте состояния • Используйте альтернативную аутентификацию • Используйте субдомены (http://api.flickr.com) • Открывайте доступ всем осознанно
Работа с сокетами • В Silverlight возможно сетевое взаимодействие через TCP-сокеты • Задается в clientaccesspolicy.xml • Нет CSRF-угрозы – нет HTTP и cookies • Угроза – перехват трафика другими внутренними утилитами или приложениями • Ограничение на порты – 4502-4534
Примеры кода • <object ...><param name="enablehtmlaccess" value=“true"/> ... </object> • <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" ExternalCallersFromCrossDomain="ScriptableOnly" .../> • <?xml version="1.0" encoding="utf-8"?><access-policy><cross-domain-access><policy><allow-from http-request-headers="*"><domain uri="http://contoso.com"/></allow-from><grant-to><resource path="/" include-subpaths="true"/></grant-to></policy></cross-domain-access></access-policy>
Полезные ссылки • Онлайн-доклады по безопасностиhttp://www.techdays.ru/Category.aspx?Tag=Security • Руководство “Security Guidance for Writing and Deploying Silverlight Applications”http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7cef15a8-8ae6-48eb-9621-ee35c2547773 • Онлайн-доклыды по Silverlighthttp://www.techdays.ru/Category.aspx?Tag=Silverlight • Центр разработки Silverlight на MSDNhttp://msdn.microsoft.com/ru-ru/Silverlight • Making a Service Available Across Domain Boundaries: http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx • EnableHtmlAccess: http://msdn.microsoft.com/en-us/library/cc838264(VS.95).aspx • ExternalCallersFromCrossDomain: http://msdn.microsoft.com/en-us/library/system.windows.deployment.externalcallersfromcrossdomain(VS.95).aspx
Принципы безопасной разработки на Silverlight Михаил Черномордиков Architect Evangelist, Microsoft http://blogs.msdn.com/mikcher mikcher@microsoft.com