Главная » Silverlight » Расширенные средства веб-служб

0

В предыдущих разделах рассмотрено создание веб-служб и обращение к ним из приложения Silverlight. В данном разделе вы научитесь предоставлять другим сайтам доступ к вашей службе, выполнять мониторинг сетевого соединения (чтобы знать, можно ли запускать вызов службы) и применять веб-службы в качестве соединитель­ного звена между ASP.NET и средствами на стороне сервера, такими как кеширование и аутентификация.

Кроссдоменные вызовы веб-служб

Платформа Silverlight позволяет без ограничений вызывать веб-службы, располо­женные на сайте приложения. Кроме того, приложение может вызывать веб-службы, расположенные на других сайтах, если вызовы явно разрешены в файле политики.

В главе 20 подробно рассматривается использование веб-служб независимых компа­ний и загрузка содержимого из Интернета. Сейчас рассмотрим лишь конфигурирова­ние веб-службы, допускающей кроссдоменные вызовы. Для этого нужно создать файл политики clientaccesspolicy. xml и разместить его в корневой папке сайта (например, в папке С: \inetpub\wwwroo.t сервера IIS). Файл clientaccesspolicy .xml определяет, ка­кие домены имеют доступ к веб-службе. Ниже приведен пример файла политики, раз­решающего доступ к веб-сайту любому приложению Silverlight, загруженному с любого веб-сервера.

<?xml version="l.О" encoding="utf-8"?>

<access-policy> <cross-domain-access> <policy> <allow-from>

<domain uri="*"/> </allow-from> <grant-to>

Cresource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access>

</access-policy>

После добавления файла политики приложения Silverlight, поддерживаемые неза­висимыми компаниями, моїут вызывать любые веб-службы сайта и передавать любые запросы HTTP (например, на загрузку веб-страниц). По умолчанию ни одна из этих операций не разрешена. Настольные и серверные приложения не подвержены этим ограничениям, независимо от файла политики. Они могут делать все, что может делать обычный пользователь, т.е. загружать любое открытое содержимое.

В файле политики можно разрешить доступ к службе приложениям Silverlight, вы­полняющимся на веб-страницах в определенных доменах. Ниже приведен файл полити­ки, разрешающий запросы приложениям Silverlight, хостируемым доменами www.some- company.com и www.someothercompany.com.

<?xml version="l.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy>

<allow-from http-request-headers="*"> <domain uri="http://www.somecompany.com" /> <domain uri="http://www.someothercompany.com" /> </allow-from> <grant-to>

•«resource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>

Метасимволы в именах доменов разрешают доступ многим доменам. Например, строка * . somecompany. com разрешает запросы доменов mail. somecompany. com, admin. somecompany. com и т.д.

Можно разрешить доступ к части сайта. Приведенный ниже файл политики предо­ставляет приложениям Silverlight доступ к содержимому папки services, вложенной в корневую папку домена (обычно в этой папке находятся кроссдоменные веб-службы).

<?xml version="l.О" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy>

<allow-from>

<domain uri="*"/> </allow-from> <grant-to> <resource path="/services/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>

Примечание. Вместо файла clientaccesspolicy .xml (см. выше), можно создать файл crossdomain.xml. Этот файл имеет то же назначение, но в нем используется стандарт, первоначально разработанный для приложений Flash. Его единственное преимущество состоит в том, что он проще при установке правил доступа приложений Silverlight и Flash одновременно. По сравнению с crossdomain.xml, файл clientaccesspolicy.xml более мощный: он позволяет задать доступ к части сайта. Оба стандарта позволяют ограничить запросы на основе домена вызывающего приложения. Дополнительную информацию о стандарте crossdomain.xml можно найти в главе 20.

Не забывайте, что, если веб-служба открыта для доступа всем желающим, нужно принять дополнительные меры безопасности. Например, не позволяйте методам служ­бы возвращать конфиденциальные данные или вносить произвольные изменения. Даже если вы уверены, что ваше приложение правильно использует службу, злоумышленнику несложно создать собственное приложение, выполняющее в службе зловредные, хоть и разрешенные вами (по неосторожности) операции. И даже если кроссдоменный до­ступ к службе запрещен, лучше ограничить методы службы как можно сильнее. Это предотвратит проблемы во многих ситуациях, например, когда при неосторожном из­менении конфигурации сайта случайно будет предоставлен кроссдоменный доступ к службам, когда хакер проникнет на веб-сайт, когда хакер вынудит ваше приложение отредактировать скрытый код и т.д.

Проверяя безопасность кроссдоменной службы, помните, что нельзя полагаться ни на записи cookie, ни на регистрационную информацию, если они не являются частью запроса. Это обусловлено тем, что проверенный пользователь может случайно открыть зловредное приложение и оно получит доступ к текущим cookie. Чтобы предотвратить подобные ситуации, рекомендуется вставить в веб-службу процедуры проверки, пра­вильно ли используется служба. С их помощью можно, например, обнаружить, что пользователь получает больше данных, чем он может вручную запросить в короткий пе­риод времени (значит, работает автомат), или что пользователь пытается просмотреть или отредактировать данные, не имеющие к нему непосредственного отношения.

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

По теме:

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