Существует концепция безопасности в отношении вызовов службы 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);
После успешного входа в систему, вызовы могут быть сделаны методом.
При взгляде на Скрипач через этот процесс, я вижу две вещи:
- Set-Cookie: .ASPXAUTH = F8FFB8B ..... (от стадии входа)
- http://localhost:1107/.../DomainService.svc/binary/DeleteResource (когда метод называется)
Так вредная пользователь может выполнить следующие действия:
- Войти, чтобы мое приложение, как ре (он зарегистрирован и получил учетные данные).
- Открыть скрипач во время работы с приложением и скопировать файлы cookie и URL, о которых я только что упомянул.
- Создайте HTTP-вызов этого URL-адреса с помощью файла cookie (например, с помощью веб-клиента C#) и начните удаление ресурсов.
Если это возможно, как я могу заблокировать это отверстие безопасности?
А если нет, что мешает пользователю это делать?