#javascript #asp.net #ajax #web-services #security
#javascript #asp.net #ajax #веб-сервисы #Безопасность
Вопрос:
Я работаю над внутренним веб-приложением, и мы используем защищенные ключи строк запросов, созданные на стороне сервера, для некоторой простой безопасности, чтобы пользователи не могли получить доступ к страницам, к которым им не был предоставлен доступ. Страница, над которой я сейчас работаю, собирает данные с помощью вызовов AJAX и отображает их в таблице на странице. В каждой строке есть кнопка редактирования, которая приведет пользователя на страницу редактирования с дополнительной информацией, при этом идентификатор строки сохраняется в строке запроса. Поскольку каждый идентификатор строки уникален, ключ для каждой страницы редактирования будет уникальным для этой комбинации строк и пользователей.
Моя проблема в том, что мне нужно каким-то образом получить эти безопасные ключи строки запроса с сервера, чтобы JavaScript перенаправлял пользователя. Я не могу переместить клиентскую часть генератора ключей, потому что это открывает возможность пользователям создавать свои собственные ключи для страниц, на посещение которых у них нет разрешения. И точно так же я не могу выставить генератор в веб-сервисе.
По сути, это сводится к тому, что я в тупике, пытаясь найти способ отправки данных с клиента на сервер, чтобы сгенерировать безопасный ключ, а затем перенаправить пользователя на новую страницу.
Не совсем уверен, что я на 100% понятен, но я отредактирую это по мере поступления вопросов.
Комментарии:
1. что не так с идентификатором сеанса, хранящимся в файле cookie?
2. Не могу понять, как это связано с тем, что я пытаюсь сделать, можете ли вы объяснить?
3. Разве невозможно сгенерировать безопасный ключ и отправить его вместе с данными при выполнении вызова AJAX?
4. Почему бы вам просто не сгенерировать все ключи для данной страницы, когда они делают запрос, и отправить их вместе с исходной страницей?
5. Я полагаю, я мог бы это сделать, но это означает создание намного больше работы, чем необходимо, поскольку вы собираетесь редактировать только один в любой момент времени, что увеличит начальное время запроса AJAX. Я не думаю, что это будет огромная разница во времени с небольшими наборами данных.
Ответ №1:
Ваш вопрос немного неясен, но PageMethods
может сработать для этого:
[WebMethod]
public static string GetSecureID()
{
return "Secure";
}
clientRedirectSecure = function() {
PageMethods.GetSecureID(onSuccess, onFailure);
}
onSuccess = function(result) {
window.location.href = "somepage.aspx?id=" resu<
}
onFailure = function(error) {
alert(error);
}
Вот статья, в которой обсуждается PageMethods
:
http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx