【发布时间】:2011-09-18 23:06:16
【问题描述】:
感谢阅读。
我想开发一个安全的 Web 应用程序,其中 jQuery 作为前端,.NET MVC 作为服务器端,其功能以 RESTful Web 服务表示。在这一点上,我正在尝试设想我将使用的安全方案,但我想要一些关于最佳实践的建议(显然我将使用 https/ssl,但当然还有更多内容)。
我一直是密钥方法的粉丝,所以我绞尽脑汁想弄清楚如何在这种类型的 Web 应用程序架构中使用它,但我不知所措。基本上,将生成一个密钥并将其放置在服务器上以及提供给客户端(因此密钥永远不会通过网络发送),并且每个客户端请求都必须使用此密钥进行数字“签名”。这是您通常在 Web 应用程序中看到的典型用户名/密码/会话 ID 结构的补充。
我的问题是客户端上的密钥的实际存储。由于 jQuery 文件只是位于服务器上的 .html,因此它无法访问虚拟 Web 目录之外的目录中的密钥文件。将密钥文件放在公共网站上不会使其成为太多秘密。 :)
这是我喜欢它的工作方式:
- 在某个时间间隔(5-15 分钟),后端进程生成一个密钥并将其放置在后端数据库以及 Web 服务器上非公共位置的文件中.
- 当客户端发出请求时,它会从密钥文件中读取,然后使用密钥对请求进行数字签名。
- 服务器接收请求并使用密钥对其进行解码。
但显然 #2 是问题所在,因为无法通过 javascript 访问“秘密”(即非公开)文件。
我是不是太偏执了?密钥方法很好,因为它在用户名/密码之外具有另一个级别的安全性(攻击者需要密钥和有效的用户名/密码),如果我每 5 分钟重新生成一次密钥,则风险会降低,如果密钥会泄露。这也确保了所有请求都是从“经过认证的”客户端发出的。但我不明白如何使用非编译代码(如 html/jQuery)。
有人对 RESTful Web 服务安全方法有什么建议或文章吗?
谢谢:)
文斯
【问题讨论】:
标签: jquery security rest service