Во все времена безопасность была одной из самых важных частей всех приложений. Обзор состоит из двух частей. В первой части я расскажу, как Silverlight защищает конечного пользователя от вредоносных сайтов. Во второй – как сделать безопасный сайт с использованием Silverlight 4.
Silverlight представляет собой плагин для браузера для создания Rich Internet Applications (RIA). Приложения на Silverlight упаковываются в .xap файлы – ZIP файлы содержащие управляемый код, DLL и разметку xaml.
Приложения Silverlight могут быть запущены в 3-х моделях безопасности:
Silverlight следует основным принципам веб безопасности, позволяя обеспечивать дополнительную функциональность безопасной для использования. Silverlight изначально считает, что все веб страницы потенциально вредоносны и запускает приложения в песочнице.
OpenFileDialog / SaveFileDialog — Silverlight позволяет приложениям читать и записывать файлы на жестком диске, но только после того, как пользователь выберет их в диалоговом окне. Приложение может предложить файл по умолчанию изадать начальное положение в файловой системе. Пользователь должен сам инициализировать запрос диалога чтобы понять какая страница спрашивает файл, а также для предотвращения бесконечного цикла всплывающих диалоговых окон. Сохраненный файл Silverlight пометит как «Из интернета» (mark of the web) чтобы показать другим пользователям, что этот файл был скачан из интернета на локальную машину.
Изолированное хранилище — Silverlight позволяет веб-страницам сохранять данные в специальный каталог на локальном жестком диске. Данные с данного домена хранятся в изолированном хранилище и не могут быть прочитаны приложениями из других доменов. По умолчанию размер хранилища ограничен 1 МБ, но приложение может спросить пользователя повысить рамки до 100 МБ. Такой диалог может появляться только один раз на странице. Пользователь может удалить данные (как Cookies).
Полноэкранный режим — Silverlight может включить полноэкранный режим. Включение этого режима требует участия пользователя. При включении Silverlight отображает сообщение «ESC to exit full screen mode.» некоторое время. При переключении окон Silverlight выйдет из полноэкранного режима, приложение никак не может помешать этому выходу. В целях предотвращения полноэкранного приложения от подмены системного экрана ввода пароля — приложения не получают буквенно-цифровых клавиш в этом режиме.
Веб-камера и микрофон — Silverlight приложение может получить доступ к веб-камере и микрофону после запроса на разрешение у пользователя. Однажды предоставленное разрешение длится, пока не закрыта страница.
Silverlight приложения могут печатать после показа диалога печати. Silverlight приложения могут читать и писать простой текст в буфер обмена, после показа предупреждения безопасности. Доступ в буфер также требует разрешения пользователя, в целях предотвращения мониторинга буфера вредоносными сайтами. Если приложение настроено с использованием Drag and drop, то пользователи могут перетаскивать файлы на приложение, после чего оно может читать содержимое файла также, как если бы он был выбран в OpenFileDialog. Если приложение не обрабатывает правую кнопку мыши то по щелчку будет показано меню настроек Silverlight. Если приложение обрабатывает правую кнопку, то будет показано меню приложения. Доступ к настройкам тогда можно получить в меню Пуск.
Для http/https запросов, Silverlight поддерживает 2 различных вида файлов кросс доменной политики безопасности.
Как тег img в HTML, Image и Media в Silverlight могут загружать изображения и медиа файлы с серверов без файлов кросс доменной политики. Для предотвращения раскрытия информации о месте происхождения, приложение не может видеть содержимое этих изображений / медиа-файлов, или их составные пиксели, или отличить поврежденный файл от несуществующего файла. В дополнение к HTTP, Silverlight позволяет приложениям использовать сокеты. Silverlight поддерживает только исходящие сокеты не слушающие (listening sockets). Silverlight 3 поддерживает TCP сокеты. В 4-й версии добавлена поддержка многоадресного UDP сокета.
Установка начинается когда пользователь выбирает «Установить» в контекстном меню Silverlight приложения или когда приложения запускает установочный на запрос пользователя. В любом случае, Silverlight покажет диалоговое окно спрашивающее подтверждение установки приложения с этого сайта.
Приложения вне браузера бывают двух видов: доверенные и изолированные. В отличии изолированных приложений в браузере, изолированные вне браузера имеют большее место для хранения данных – 25 МБ вместо 1 МБ, ведь пользователь сам принял конкретное решение на установку.
Доверенные приложения запускаются вне песочницы. Вы не должны устанавливать / запускать доверенных приложений, если вы не готовы запустить. EXE с того же сайта. Доверенные приложения получить следующие дополнительные разрешения:
Silverlight полностью разрабатывался в разделе Microsoft's Secure Development Lifecycle (SDL). Silverlight реализован как комбинация управляемого и родного для системы языков (native). Чтобы увеличить безопасность управляемый код делится на 3 категории: Transparent, SafeCritical, and Critical. Transparent код (по умолчанию) запускается изолированным (в песочнице) как и приложение. Critical и SafeCritical позволяет делать небезопасные вещи такие, как вызов неуправляемого кода. Transparent код не может напрямую делать вызовы в Critical код, поэтому SafeCritical выступает в качестве промежуточного слоя, где осуществляется больше проверок безопасности.
В этой части мы познакомились с основными принципами и методами защиты конечных пользователей Silverlight. В следующей части я поведаю, как создать безопасный сайт с использованием Silverlight. Все ссылки и вся литература будет во второй части.
Введение
Silverlight представляет собой плагин для браузера для создания Rich Internet Applications (RIA). Приложения на Silverlight упаковываются в .xap файлы – ZIP файлы содержащие управляемый код, DLL и разметку xaml.
Приложения Silverlight могут быть запущены в 3-х моделях безопасности:
- In browser — приложение запускается как часть веб страницы в браузере, изолированное от других страниц
- Out of browser (sandboxed) — приложение может запускаться из браузера, но также может быть установлено в меню Пуск. Silverlight спросит пользователя подтверждение перед установкой. Изолированные приложения вне браузера имеют те же самые привилегии, что и приложения в браузере.
- Out of browser (trusted) — аналогичные приложения как вне браузера. Приложения могут запускаться в браузере (с ограничениями безопасности браузера). Когда приложение установлено и запускается вне браузера – у него есть дополнительные привилегии. Запуск доверенных приложений вне браузера аналогичен запуску .EXE – возможность доступа к данным пользователя, сети и файловой системе.
Как Silverlight защищает конечного пользователя от вредоносных сайтов
Silverlight следует основным принципам веб безопасности, позволяя обеспечивать дополнительную функциональность безопасной для использования. Silverlight изначально считает, что все веб страницы потенциально вредоносны и запускает приложения в песочнице.
Песочница. Возможности и ограничения
OpenFileDialog / SaveFileDialog — Silverlight позволяет приложениям читать и записывать файлы на жестком диске, но только после того, как пользователь выберет их в диалоговом окне. Приложение может предложить файл по умолчанию изадать начальное положение в файловой системе. Пользователь должен сам инициализировать запрос диалога чтобы понять какая страница спрашивает файл, а также для предотвращения бесконечного цикла всплывающих диалоговых окон. Сохраненный файл Silverlight пометит как «Из интернета» (mark of the web) чтобы показать другим пользователям, что этот файл был скачан из интернета на локальную машину.
Изолированное хранилище — Silverlight позволяет веб-страницам сохранять данные в специальный каталог на локальном жестком диске. Данные с данного домена хранятся в изолированном хранилище и не могут быть прочитаны приложениями из других доменов. По умолчанию размер хранилища ограничен 1 МБ, но приложение может спросить пользователя повысить рамки до 100 МБ. Такой диалог может появляться только один раз на странице. Пользователь может удалить данные (как Cookies).
Полноэкранный режим — Silverlight может включить полноэкранный режим. Включение этого режима требует участия пользователя. При включении Silverlight отображает сообщение «ESC to exit full screen mode.» некоторое время. При переключении окон Silverlight выйдет из полноэкранного режима, приложение никак не может помешать этому выходу. В целях предотвращения полноэкранного приложения от подмены системного экрана ввода пароля — приложения не получают буквенно-цифровых клавиш в этом режиме.
Веб-камера и микрофон — Silverlight приложение может получить доступ к веб-камере и микрофону после запроса на разрешение у пользователя. Однажды предоставленное разрешение длится, пока не закрыта страница.
Silverlight приложения могут печатать после показа диалога печати. Silverlight приложения могут читать и писать простой текст в буфер обмена, после показа предупреждения безопасности. Доступ в буфер также требует разрешения пользователя, в целях предотвращения мониторинга буфера вредоносными сайтами. Если приложение настроено с использованием Drag and drop, то пользователи могут перетаскивать файлы на приложение, после чего оно может читать содержимое файла также, как если бы он был выбран в OpenFileDialog. Если приложение не обрабатывает правую кнопку мыши то по щелчку будет показано меню настроек Silverlight. Если приложение обрабатывает правую кнопку, то будет показано меню приложения. Доступ к настройкам тогда можно получить в меню Пуск.
Сеть
Для http/https запросов, Silverlight поддерживает 2 различных вида файлов кросс доменной политики безопасности.
- clientaccesspolicy.xml — этот файл содержит список доменов, которые могут «разговаривать» с третьей стороной, с поддержкой шаблонов вида *.habr.ru. clientaccesspolicy.xml также может ограничить доступ к определенным путям на сервере — например, thirdparty.com/public разрешен, а thirdparty.com/private запрещен
- crossdomain.xml (для совместимости Adobe Flash) — должен быть размещен в корневом каталоге домена, который предоставляет доступ (например, thirdparty.com/crossdomain.xml), а также должен предоставить доступ ко всем доменам: <allow-http-request-headers-from domain="*" headers="*"/>
Как тег img в HTML, Image и Media в Silverlight могут загружать изображения и медиа файлы с серверов без файлов кросс доменной политики. Для предотвращения раскрытия информации о месте происхождения, приложение не может видеть содержимое этих изображений / медиа-файлов, или их составные пиксели, или отличить поврежденный файл от несуществующего файла. В дополнение к HTTP, Silverlight позволяет приложениям использовать сокеты. Silverlight поддерживает только исходящие сокеты не слушающие (listening sockets). Silverlight 3 поддерживает TCP сокеты. В 4-й версии добавлена поддержка многоадресного UDP сокета.
Приложения вне браузера
Установка начинается когда пользователь выбирает «Установить» в контекстном меню Silverlight приложения или когда приложения запускает установочный на запрос пользователя. В любом случае, Silverlight покажет диалоговое окно спрашивающее подтверждение установки приложения с этого сайта.
Приложения вне браузера бывают двух видов: доверенные и изолированные. В отличии изолированных приложений в браузере, изолированные вне браузера имеют большее место для хранения данных – 25 МБ вместо 1 МБ, ведь пользователь сам принял конкретное решение на установку.
Доверенные приложения запускаются вне песочницы. Вы не должны устанавливать / запускать доверенных приложений, если вы не готовы запустить. EXE с того же сайта. Доверенные приложения получить следующие дополнительные разрешения:
- встроенную интеграцию например COM
- чтение и запись файлов на локальном диске (не не ограничиваясь изолированных хранилищем)
- Сокеты и кросс доменные запросы допускаются без файлов политик безопасности.
Песочница
Silverlight полностью разрабатывался в разделе Microsoft's Secure Development Lifecycle (SDL). Silverlight реализован как комбинация управляемого и родного для системы языков (native). Чтобы увеличить безопасность управляемый код делится на 3 категории: Transparent, SafeCritical, and Critical. Transparent код (по умолчанию) запускается изолированным (в песочнице) как и приложение. Critical и SafeCritical позволяет делать небезопасные вещи такие, как вызов неуправляемого кода. Transparent код не может напрямую делать вызовы в Critical код, поэтому SafeCritical выступает в качестве промежуточного слоя, где осуществляется больше проверок безопасности.
Заключение
В этой части мы познакомились с основными принципами и методами защиты конечных пользователей Silverlight. В следующей части я поведаю, как создать безопасный сайт с использованием Silverlight. Все ссылки и вся литература будет во второй части.