感谢您的阅读。使用jQuery前端的REST Web服务安全性
我想开发一个安全的Web应用程序,使用jQuery作为前端,.NET MVC作为服务器端,其功能用RESTful Web服务表示。在这一点上,我试图设想我将使用的安全方案,但我想要一些关于最佳实践的建议(显然我将使用https/ssl,但当然还有更多)。
我一直都是秘密钥匙方法的粉丝,所以我试图弄清楚如何在这种类型的Web应用程序架构中使用它,但我很茫然。基本上,一个秘密密钥将被生成并放置在服务器以及给予客户端(因此密钥绝不会通过线路发送),并且每个客户端请求必须用此密钥进行数字“签名”。这是您通常在Web应用中看到的典型用户名/密码/会话ID结构的补充。
我的问题是密钥在客户端上的实际存储。由于jQuery文件只是坐在服务器上的.html文件,因此无法访问虚拟Web目录之外的目录中的密钥文件。将密钥文件放在公共网站上并不会带来太多秘密。 :)
这是我怎么会喜欢它工作:
- 在一定的时间间隔(5-15分钟),后端工艺生成私钥,并把它无论是在后端数据库以及Web服务器上非公开位置的文件。
- 当客户端发出请求时,它会从密钥文件中读取数据,然后用密钥对请求进行数字签名。
- 服务器接收到请求并使用密钥进行解码。
但显然#2是问题,因为没有办法通过JavaScript访问“秘密”(即非公共)文件。
我是不是太偏执?秘密密钥方法很好,因为它具有超出用户名/密码的另一级别的安全性(攻击者需要密钥和有效的用户名/密码),并且如果每5分钟重新生成一次密钥,那么风险将会降低秘密密钥会泄漏。这也确保了所有请求都来自“经过认证”的客户端。但我不明白如何使用诸如html/jQuery之类的非编译代码。
有没有人有任何关于REST风格的Web服务安全方法的建议或文章?
谢谢:)
文斯