使用jQuery前端的REST Web服务安全性

谢谢阅读。

我想开发一个安全的Web应用程序,其中jQuery作为前端,.NET MVC作为服务器端,其function以RESTful Web服务表示。 在这一点上,我正在设想我将使用的安全方案,但我想要一些关于最佳实践的建议(显然我将使用https / ssl,但当然还有更多内容)。

我一直是秘密密钥方法的粉丝所以我正在绞尽脑汁试图弄清楚如何在这种类型的Web应用程序架构中使用它,但我不知所措。 基本上,将生成密钥并将其放置在服务器上以及提供给客户端(因此密钥永远不会通过线路发送),并且每个客户端请求必须使用此密钥以数字方式“签名”。 这将是您通常在Web应用中看到的典型用户名/密码/会话ID结构的补充。

我的问题是在客户端上实际存储密钥。 由于jQuery文件只是位于服务器上的.html,因此无法访问虚拟Web目录之外的目录中的密钥文件。 将秘密密钥文件放在公共网站上并不会让它成为太多秘密。 🙂

以下是我希望它的工作方式:

  1. 在一定的时间间隔(5-15分钟),后端进程生成一个密钥,并将其放在后端数据库中,以及Web服务器上非公共位置的文件中。
  2. 当客户端发出请求时,它将从密钥文件中读取,然后使用密钥对请求进行数字签名。
  3. 服务器接收请求并使用密钥对其进行解码。

但显然#2是问题所在,因为无法通过javascript访问“秘密”(即非公开)文件。

我太偏执了吗? 密钥方法很好,因为它具有超出用户名/密码的另一级别的安全性(攻击者需要密钥和有效的用户名/密码),如果我每5分钟重新生成密钥,则风险会降低,如果密钥会泄漏。 这也确保所有请求都来自“认证”客户端。 但我不知道如何使用非编译代码,如html / jQuery。

有没有人对RESTful Web服务安全方法有任何建议或文章?

谢谢 :)

文斯

如果您还没有,我建议您阅读有关OAuth 1.0和2.0的一些内容。 它们都被一些较大的API使用,例如Facebook,Netflix,Twitter等。 2.0仍在草案中,但这并没有阻止任何人实现它并使用它,因为它对客户端来说更简单。 听起来你想要更复杂,更安全的东西,所以你可能想要专注于1.0。

我总是发现Netflix的身份validation概述对客户来说是一个很好的解释。

一个快速的谷歌搜索给出了这篇文章: 操作方法:在JavaScript中保护OAuth