我目前的Web应用程序系统架构如上所示。本质上,它只是一个代码库,它被部署在不同的上下文中,例如,app1.localhost.com,app2.localhost.com。
这些是我目前的挑战 -
这是一个有缺陷的模型吗?我的期望是否超出标准的做法?实现这种架构的最佳方法是什么?
答案 0 :(得分:1)
让我们一步一步地完成这个过程。
因此,您的网络服务需要了解应用程序和用户。
简单:只需将其作为参数或作为网址的一部分包含在请求中。
用户可能提供的一些信息也是如此。
挑战来自要求用户无法更改请求。
这通常是通过加密签名请求(或敏感部分)来实现的。我认为重播攻击也是一个问题。
为应用创建证书。
在应用程序服务器上创建nonce。
使用证书对nonce,应用程序名称和用户名进行签名。
在用于ajax调用的请求中包含nonce,servername,username和signature。
检查网络服务中的随机数,服务器名,用户名和签名匹配
还要检查之前是否使用过nonce。
检查nonce确实需要一些状态,但只需要一个nonce列表。如果你使随机数增加,你甚至可以丢弃比你收到的最后一个小得多的任何小数,更多地限制状态量。
你应该检查这样的东西是否作为现成的协议存在,因为创建你自己的安全相关协议总是一个坏主意。