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

时间:2011-06-20 19:16:13

标签: jquery security rest service

感谢阅读。

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

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

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

以下是我喜欢的工作方式:

  1. 在某个时间间隔(5-15分钟),后端进程会生成一个密钥,并将其放在后端数据库中,也可以放在Web服务器上非公共位置的文件中
  2. 当客户端发出请求时,它会从密钥文件中读取,然后使用密钥对请求进行数字签名。
  3. 服务器接收请求并使用密钥对其进行解码。
  4. 但显然#2是问题所在,因为无法通过javascript访问“秘密”(即非公开)文件。

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

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

    谢谢:)

    文斯

1 个答案:

答案 0 :(得分:2)

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

我总是发现Netflix的Authentication Overview对客户来说是一个很好的解释。

快速谷歌搜索给出了这篇文章:How-to: Secure OAuth in JavaScript