Главная » Silverlight » Безопасность средств взаимодействия с HTML

0

С появлением средств взаимодействия кода Silverlight с кодом HTML возникли но­вые проблемы, касающиеся безопасности. Это особенно справедливо, если приложение Silverlight и хостирующая веб-страница разрабатываются разными людьми или орга­низациями. Существует риск того, что зловредный код приложения Silverlight попыта­ется вмешаться в работу страницы HTML. И наоборот, код JavaScript, расположенный на странице HTML, может получить доступ к приложению Silverlight и вынудить его вы­полнить операции, нужные злоумышленнику.

Если безопасность приложения особенно важна, вы можете ограничить взаимодей­ствие между Silverlight и HTML. Чтобы не дать приложению Silverlight выйти за рамки, установите один или два параметра на входной странице HTML.

•      enableHtmlAccess. Когда этот параметр равен false, приложение Silverlight не может применить большинство средств взаимодействия с HTML, включая свойства Document, Window, Plugin и Browserlnformation класса Ht­ml Page (однако может вызывать метод Html Page . PopupWindow ()). Обычно свойство enableHtmlAccess по умолчанию имеет значение true, и нужно явно отключить его. Если приложение Silverlight хостируется доменом, отличным от домена, в котором находится входная страница HTML, параметр enableHt­mlAccess по умолчанию равен fa,lse. Тогда, чтобы разрешить взаимодействие между Silverlight и HTML, нужно явно присвоить ему значение true.

•      allowHtmlPopupwindow. Если этот параметр равен false, приложение Silver- light не может вызвать метод HtmlPage . PopupWindow () и вывести на экран всплывающее окно. По умолчанию параметр allowHtmlPopupwindow ра­вен true, если входная страница и приложение Silverlight развернуты вместе, и false, если они хостируются разными доменами.

Ниже приведен пример установки параметров enableHtmlAccess и allowHtml­Popupwindow.

<div id="silverlightControlHost"> cobject data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">

<param name="enableHtmlAcces^" value="false" /> <param name="allowHtmlPopupwindow" value="false" />

</object>

<iframe style=’visibility:hidden;height: 0;width: border:Opx’></iframe>

</div>

Кроме того, надстройка Silverlight предоставляет возможность защитить приложе­ние от кода JavaScript. Но важно помнить, что код JavaScript не имеет доступа к прило­жению, если вы явно не объявите отдельные классы и методы с атрибутом Scriptable, как описывалось ранее. Тогда они будут доступными для сценариев JavaScript. Когда метод объявлен как Scriptable, он может быть вызван с входной страницы HTML при условии, что входная страницы и приложение Silverlight развернуты в одном домене.

Если приложение и входная страница развернуты в разных доменах, надстройка Silverlight накладывает более строгие ограничения. В этом случае странице HTML не разрешено обращаться к методам и классам, объявленным как Scriptable. Вы можете переопределить эти правила и разрешить доступ страниц HTML к любым классам и ме­тодам, объявленным как Scriptable. Для этого нужно в манифесте приложения (файл AppManifest.xml)установить атрибут ExternalCallersFromCrossDomain.

<Deployment xmlns="http://schemas.microsoft.com/client/1^

2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ExternalCallersFromsCrossDomain="ScriptableOnly" .. .> <Deployment.Parts>

</Deployment.Parts>

</Deployment>

Однако применяйте этот атрибут осторожно. Злоумышленник может установить на другом сервере страницу HTML, хостирующую ваше приложение Silverlight без вашего ведома или согласия. Если вы явно разрешите кроссдоменный доступ к методам и клас­сам Silverlight, объявленным как Scriptable, злоумышленник сможет вызывать эти ме­тоды и обращаться к классам в любой момент времени, причем вы не узнаете об этом.

Резюме

В этой главе рассмотрено создание веб-страниц, в которых средства Silverlight вза­имодействуют со средствами HTML. Вы узнали, как Silverlight находит элементы HTML и манипулирует ими, как приложение Silverlight вызывает процедуры JavaScript и как код Silverlight реагирует на события в среде HTML. Рассмотрен также обратный процесс — вызов методов Silverlight в коде JavaScript. В конце главы обсуждаются проблемы безопас­ности, связанные с разрушением барьеров между кодом Silverlight и страницей HTML.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии