【问题标题】:REST Web Service Security with jQuery Front-End使用 jQuery 前端的 REST Web 服务安全性
【发布时间】:2011-09-18 23:06:16
【问题描述】:

感谢阅读。

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

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

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

这是我喜欢它的工作方式:

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

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

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

有人对 RESTful Web 服务安全方法有什么建议或文章吗?

谢谢:)

文斯

【问题讨论】:

    标签: jquery security rest service


    【解决方案1】:

    如果您还没有阅读过,我建议您阅读一下OAuth 1.02.0。它们都被一些更大的 API 使用,例如 Facebook、Netflix、Twitter 等。 2.0 仍处于草案阶段,但这并没有阻止任何人实施和使用它,因为它对客户来说更易于使用。听起来您想要更复杂、更安全的东西,因此您可能希望专注于 1.0。

    我一直认为 Netflix 的 Authentication Overview 是对客户的一个很好的解释。

    快速谷歌搜索给出了这个帖子:How-to: Secure OAuth in JavaScript

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多