PageMethods security - PullRequest
       15

PageMethods security

2 голосов
/ 21 марта 2010

Я пытаюсь "AJAX-ify" мой сайт, чтобы улучшить пользовательский интерфейс.С точки зрения производительности, я также пытаюсь избавиться от UpdatePanel.В Encosia я натолкнулся на отличную статью, в которой описывается способ публикации с использованием PageMethods.У меня вопрос, насколько безопасны методы страницы в производственной среде?Будучи общедоступным, может ли кто-нибудь создать JSON-скрипт для POST непосредственно на сервер, или проводятся междоменные проверки?Мои PageMethods также записывают данные в базу данных (после фильтрации).

Я использую проверку подлинности с помощью форм на своих страницах и при загрузке страницы перенаправляет неаутентифицированных пользователей на страницу входа.Должны ли методы страницы на этой странице также проверять аутентификацию, если пользователь отправляет запрос непосредственно в метод, или эта аутентификация наследуется для всей страницы?(По сути, происходит ли весь цикл страницы, даже если пользователю удалось опубликовать только в PageMethod)?

Спасибо

Ответы [ 4 ]

3 голосов
/ 21 марта 2010

PageMethods так же безопасны, как и обработчик, в котором они находятся.

FormsAuthentication защитит все, кроме страницы входа в систему.

На незащищенном обработчике, таком как вход в систему, вы должны предоставлять только методы, которые 1) не чувствительны или 2) проверяют пользователя.

РЕДАКТИРОВАТЬ: в ответ на комментарии и другие ответы относительно CSRF иXSS см. http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx

1 голос
/ 21 марта 2010

Вы пытаетесь защитить от CSRF атак.

Эти атаки можно предотвратить, потребовав код авторизации в параметрах POST и указав код авторизации при начальной загрузке страницы.,(Код авторизации должен быть для каждого IP-адреса и для каждого пользователя и должен быстро истекать)

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

0 голосов
/ 05 апреля 2018

Я работаю над проектом, который интенсивно использует методы страницы ASP.Net WebForms, с которыми я общаюсь с помощью Ajax. Это довольно удобно для меня, чем писать все мои коды на JavaScript.

Однако, защита методов страницы стала проблемой, которая беспокоила меня. Я вижу, что могу получить доступ к методам страницы через Postman и Fiddler, что позволяет хакерам играть с вашими API.

Мое решение было довольно простым, которое я обнаружил случайно. Добавление статического запроса Cookie к методу страницы вернет ошибку для любого приложения, которое НЕ является веб-сайтом.

 [WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public static string GetAnything(object dat)
{
    HttpCookie myguid = HttpContext.Current.Request.Cookies.Get(Constants.Session.PreventHacking);
    var hackguid = myguid.Value ?? ""; //other page method contents
    return "anything";
}

Запрос почтальона к этому методу вернет:

{
"Message": "There was an error processing the request.",
"StackTrace": "",
"ExceptionType": ""}

Хотя в LocalHost будет отображаться более подробная ошибка.

Я понимаю, что есть надстройки браузера, которые могут перехватывать вызовы API, сидя рядом с веб-сайтом. Я не проверял это. Однако для этого необходимо создать отдельное исправление безопасности. Я обновлю здесь, как только выполню некоторые тесты.

0 голосов
/ 21 марта 2010

Думайте о методах страницы как о мини-веб-сервисе, локальном для страницы. Дело в том, что у них не будет никаких дополнительных проверок и проверок, кроме тех, которые размещены на всем веб-сайте, и тех, которые вы решите вставить.

Использование Pagemethods является разумной идеей с точки зрения «инкапсуляции», и если вы собираетесь их использовать, не помешает попытка ввести некоторые дополнительные меры безопасности.

...