#silverlight #security #silverlight-4.0
#silverlight #Безопасность #silverlight-4.0
Вопрос:
У меня есть приложение Silverlight, которое находится вне браузера и находится на рабочем столе клиента. Я хочу, чтобы он вызывал мой веб-сервис, который находится в Интернете.
Как я могу быть уверен, что выполняемый вызов действителен и не является злоумышленником?
В моей голове я хочу сказать, что я могу просто передать пароль, который знает только приложение Silverlight… но я уверен, что это не сработает.
Как люди обычно делают такого рода вещи?
Комментарии:
1. Безопасность — это очень субъективный вопрос, вы ведете список рекордов или на вашем сайте установлена necular powerstation? Важно дать некоторое представление о связанных с этим рисках, чтобы можно было оценить уровень необходимых усилий. То, о чем вы просите, на самом деле невозможно, если вы не готовы принять некоторый умеренный риск? Вы уверены, что вам просто не нужно авторизовывать пользователей вместо этого?
Ответ №1:
Это зависит от того, от кого вы на самом деле хотите защитить свои веб-сервисы. Я полагаю, что проблема здесь в том, что вы не хотите, чтобы ваш пользователь использовал другие приложения для вызова ваших служб.
На клиентском компьютере запускается приложение silverlight. Все, что известно приложению silverlight, также доступно конечному пользователю или любому другому лицу, имеющему доступ к этому компьютеру. То есть, если silverlight может вызывать вашу веб-службу, то ваш конечный пользователь может использовать другие инструменты для выполнения тех же вызовов. Вы можете создавать схемы, которые затрудняют выполнение этого, но это будет возможно.
Ответ №2:
Вы можете использовать аутентификацию SL ASP .net membership provider:
http://www.silverlightshow.net/items/Leveraging-the-ASP.NET-Membership-in-Silverlight.aspx
Удачи, Браулио
Комментарии:
1. Это было бы стандартной защитой пользователя, но вопрос подразумевает, что авторизовываться должно само приложение, а не отдельные пользователи.
2. Если это само приложение, я бы просто ограничил загрузку (только для пользователя, прошедшего проверку подлинности), а затем добавил логин при запуске приложения. После загрузки приложение оказывается на компьютере клиента, так что он может легко разобрать его или выполнить любую вредоносную программу, какую захочет.
Ответ №3:
Я не уверен, правильно ли я понимаю вопрос, поэтому этот ответ может быть неточным, и извините, если это так.
Клиентский вызов Silverlight к службе wcf проверяется clientaccesspolicy.xml .
В разделе «разрешить из» этого файла вы указываете, с какого домена размещения приложение silverlight может получить доступ к сервису, доступ из приложения silverlight, размещенного в другом домене, приведет к междоменному исключению. Но вполне вероятно, что злоумышленник может изменить информацию о домене хостинга в клиенте silverlight.
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAP">
<domain uri="http://my.domain.com"/> <!-- allowed domains -->
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>