2009-06-09 2 views
2

Я всегда использовал Scriptmanager для обработки всех вызовов AJAX, но я начинаю расширяться и играю с использованием jQuery и JSON для использования веб-сервиса ASP.NET 3.5. Я использую стандартные вызовы jQuery, как вы можете видеть ниже, что прекрасно работает. Меня беспокоит безопасность и как обеспечить, чтобы я не открывал никаких дверей, отбросив Scriptmanager. Любая информация ценится, то, что я нашел в сети, скорее связано скорее с реализацией, чем с безопасностью.Безопасность с использованием веб-сервисов ASP.NET с использованием jQuery

$.ajax({ 
    type: "POST", 
    url: "Webservices/Service.asmx/HellowWorld", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     alert(msg.d); 
    } 
}); 

UPDATE: Bumping это в кого-то надежды может предоставить некоторую информацию.

Я хочу, чтобы доступ к этой службе разрешали только прошедшим проверку пользователям. Я использую службы членства ASP.NET в MVC и хочу, чтобы мои вызовы jQuery AJAX (JSON) выполнялись аутентифицированным пользователем. Любая информация оценена.

ответ

0

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

В этом случае я передаю зашифрованный токен, содержащий данные, которые я использую для аутентификации пользователя. Знак им передается.

Если есть лучший/более безопасный способ сделать это, я буду открыт.

0

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

Если вы заинтересованы в безопасности сообщений и/или транспорта, вам необходимо использовать SSL для шифрования транспортного канала между клиентом и сервером.

+0

Я понимаю это, и я знаю, чтобы не разрешать запросы GET. Я больше разбираюсь в перекрестных вызовах и т. Д. Я обрабатываю проверку данных SQL-инъекций в веб-методах. Сами данные не чувствительны. Я просто хочу, чтобы мой веб-метод был доступен для других вызовов сервера. Надеюсь, что имеет смысл. Спасибо –

0

То, как я решил проблему, заключалось в том, чтобы создать валидаторное предложение внутри веб-службы.

 MembershipUser u =Membership.GetUser(HttpContext.Current.User.Identity.Name); 
    if (u.IsOnline) 
    { 

     //do work 
    } 

Возможно, это не лучший способ решить проблему, и это может быть грязно. Но он работает для меня. Было бы идеально, если бы вы могли проверить HttpContext при вызове, а не внутри службы, но я не смог понять, как это сделать.

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