Перенаправление с JavaScript

#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