Безопасность веб-службы REST с помощью jQuery Front-End - PullRequest
3 голосов
/ 20 июня 2011

Спасибо за чтение.

Я хотел бы разработать безопасное веб-приложение с jQuery в качестве внешнего интерфейса и .NET MVC на стороне сервера с его функциональностью, выраженной в веб-сервисах RESTful. На данный момент я пытаюсь представить схему безопасности, которую буду использовать, но мне нужен был совет по передовым методам (очевидно, я буду использовать https / ssl, но это больше, чем это, конечно).

Я всегда был поклонником подхода с секретным ключом, поэтому я ломал голову, пытаясь понять, как использовать его в архитектуре веб-приложений такого типа, но я в растерянности. По сути, секретный ключ будет сгенерирован и размещен как на сервере, так и передан клиенту (таким образом, ключ никогда не передается по сети), и каждый запрос клиента должен быть «подписан» этим ключом в цифровой форме. Это будет в дополнение к типичной структуре имени пользователя / пароля / идентификатора сеанса, которую вы обычно видите в веб-приложениях.

Моя проблема - фактическое хранение секретного ключа на клиенте. Поскольку файл jQuery находится на сервере только в формате .html, у него нет возможности получить доступ к файлу секретного ключа в каталоге вне виртуального веб-каталога. А размещение файла секретного ключа на общедоступном веб-сайте не сделало бы его слишком большим секретом. :)

Вот как я хотел бы , чтобы это работало:

  1. Через определенный интервал (5-15 минут) внутренний процесс генерирует секретный ключ и помещает его как во внутреннюю базу данных, так и в файл в непубличном месте на веб-сервере. .
  2. Когда клиент делает запрос, он читает из файла ключа, а затем подписывает цифровой запрос с помощью секретного ключа.
  3. Сервер получает запрос и декодирует его с помощью секретного ключа.

Но, очевидно, проблема # 2 в том, что нет способа получить доступ к «секретному» (то есть непубличному) файлу через javascript.

Я слишком параноик? Подход с секретным ключом хорош, потому что он имеет другой уровень безопасности, помимо имени пользователя / пароля (злоумышленнику потребуется секретный ключ И действительное имя пользователя / пароль), и если я перегенерирую ключ каждые 5 минут, риск уменьшается, если секретный ключ будет течь. Это также обеспечивает выполнение всех запросов от «сертифицированного» клиента. Но я не понимаю, как это возможно, используя не скомпилированный код, такой как html / jQuery.

У кого-нибудь есть предложения или статьи о методах безопасности веб-службы RESTful?

Спасибо:)

Винс

1 Ответ

2 голосов
/ 20 июня 2011

Если вы еще этого не сделали, я бы порекомендовал почитать OAuth 1.0 и 2.0 .Они оба используются некоторыми более крупными API, такими как Facebook, Netflix, Twitter и т. Д.2.0 все еще находится в стадии разработки, но это никого не остановило от его реализации и использования, так как клиенту проще в использовании.Звучит так, будто вы хотите что-то более сложное и более безопасное, поэтому вы можете сосредоточиться на 1.0.

Я всегда находил Обзор аутентификации Netflix хорошим объяснением для клиентов.

И быстрый поиск в Google дает этот пост: Как: Безопасный OAuth в JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...