Спасибо за чтение.
Я хотел бы разработать безопасное веб-приложение с jQuery в качестве внешнего интерфейса и .NET MVC на стороне сервера с его функциональностью, выраженной в веб-сервисах RESTful. На данный момент я пытаюсь представить схему безопасности, которую буду использовать, но мне нужен был совет по передовым методам (очевидно, я буду использовать https / ssl, но это больше, чем это, конечно).
Я всегда был поклонником подхода с секретным ключом, поэтому я ломал голову, пытаясь понять, как использовать его в архитектуре веб-приложений такого типа, но я в растерянности. По сути, секретный ключ будет сгенерирован и размещен как на сервере, так и передан клиенту (таким образом, ключ никогда не передается по сети), и каждый запрос клиента должен быть «подписан» этим ключом в цифровой форме. Это будет в дополнение к типичной структуре имени пользователя / пароля / идентификатора сеанса, которую вы обычно видите в веб-приложениях.
Моя проблема - фактическое хранение секретного ключа на клиенте. Поскольку файл jQuery находится на сервере только в формате .html, у него нет возможности получить доступ к файлу секретного ключа в каталоге вне виртуального веб-каталога. А размещение файла секретного ключа на общедоступном веб-сайте не сделало бы его слишком большим секретом. :)
Вот как я хотел бы , чтобы это работало:
- Через определенный интервал (5-15 минут) внутренний процесс генерирует секретный ключ и помещает его как во внутреннюю базу данных, так и в файл в непубличном месте на веб-сервере. .
- Когда клиент делает запрос, он читает из файла ключа, а затем подписывает цифровой запрос с помощью секретного ключа.
- Сервер получает запрос и декодирует его с помощью секретного ключа.
Но, очевидно, проблема # 2 в том, что нет способа получить доступ к «секретному» (то есть непубличному) файлу через javascript.
Я слишком параноик? Подход с секретным ключом хорош, потому что он имеет другой уровень безопасности, помимо имени пользователя / пароля (злоумышленнику потребуется секретный ключ И действительное имя пользователя / пароль), и если я перегенерирую ключ каждые 5 минут, риск уменьшается, если секретный ключ будет течь. Это также обеспечивает выполнение всех запросов от «сертифицированного» клиента. Но я не понимаю, как это возможно, используя не скомпилированный код, такой как html / jQuery.
У кого-нибудь есть предложения или статьи о методах безопасности веб-службы RESTful?
Спасибо:)
Винс