1

Существует концепция безопасности в отношении вызовов службы WCF, которые я не могу понять.Silverlight и WCF RIA, обеспечивающие сервисные вызовы. Я что-то упускаю?

Я построил образец решения Silverlight и включил WCF RIA.
У меня есть операция Invoke (или любые из созданных автоматически CRUD лет по этому вопросу), который я снабженный [RequiresAuthentication()]:

[RequiresAuthentication()] 
[Invoke] 
public void DeleteResource(string id) 
{ 
    //... 
} 

Далее я изменил web.config, чтобы включить формы аутентификация:

<system.web> 
    <httpModules>...</httpModules> 
    <compilation>...</compilation> 
    <authentication mode="Forms" />  
</system.web> 

Теперь только прошедшие проверку подлинности пользователи могут позвонить по этому методу. Таким образом, в клиенте мне нужно для проверки подлинности:

FormsAuthentication auth = new FormsAuthentication(); 
auth.Login(textBoxUsername.Text, textBoxPassword.Text); 

После успешного входа в систему, вызовы могут быть сделаны методом.

При взгляде на Скрипач через этот процесс, я вижу две вещи:

  1. Set-Cookie: .ASPXAUTH = F8FFB8B ..... (от стадии входа)
  2. http://localhost:1107/.../DomainService.svc/binary/DeleteResource (когда метод называется)

Так вредная пользователь может выполнить следующие действия:

  1. Войти, чтобы мое приложение, как ре (он зарегистрирован и получил учетные данные).
  2. Открыть скрипач во время работы с приложением и скопировать файлы cookie и URL, о которых я только что упомянул.
  3. Создайте HTTP-вызов этого URL-адреса с помощью файла cookie (например, с помощью веб-клиента C#) и начните удаление ресурсов.

Если это возможно, как я могу заблокировать это отверстие безопасности?
А если нет, что мешает пользователю это делать?

ответ

0

Честно говоря, я не вижу дыру в безопасности здесь:

  1. Если пользователь смог войти, он - как я предполагаю - разрешено выполнять указанную операцию.
  2. Аутентификация! = Авторизация. Вы должны не только проверять, прошел ли аутентификация пользователя, но и если он/она уполномочен выполнять какую-либо одну операцию (на стороне обслуживания, конечно). С точки зрения безопасности не должно быть разницы между операцией вызова из браузера и использованием «подготовленного вручную» запроса - авторизация должна выполняться на уровне обслуживания при каждом вызове (вы никогда не должны доверять клиенту - то есть WebBrowser от самого причина, по которой вы опубликовали этот вопрос). Если пользователь пытается что-то ему не разрешено, должна произойти ошибка авторизации.
  3. Файл cookie аутентификации должен иметь установленное время истечения аутентификации (например, 30 минут).

 Смежные вопросы

  • Нет связанных вопросов^_^