jquery - 使用 jQuery 前端实现 REST Web 服务安全

标签 jquery security rest service

感谢您的阅读。

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

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

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

这是我希望它如何工作:

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

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

我是不是太偏执了? secret key 方法很好,因为它具有超越用户名/密码的另一个安全级别(攻击者需要 secret key 和有效的用户名/密码),如果我每 5 分钟重新生成一次 key ,则可以减轻风险 key 会泄露。这也确保所有请求均来自“经过认证的”客户端。但我不明白如何使用非编译代码(例如 html/jQuery)。

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

谢谢:)

文斯

最佳答案

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

我总是找到 Netflix 的 Authentication Overview为客户提供一个很好的解释。

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

关于jquery - 使用 jQuery 前端实现 REST Web 服务安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416229/

相关文章:

javascript - 浏览器扩展可以记录用户输入吗?

http - 如何处理 Jersey 发布请求的可变数量参数

java - XML解析错误: junk after document element - REST

javascript - 应用jquery函数时需要Id吗?

javascript - 在 jQuery Ajax .load() 方法上引发加载事件

php - 在数据库中加密密码有什么意义?

rest - Elasticsearch:地理位置距离查询错误

javascript - 单击选中/取消选中仅工作 2 次然后不起作用

javascript - 更改悬停框内文本的颜色

mysql - 在MySQL 5.x中,是否可以根据条件授予权限(不使用 View )?