保护(PHP)Web和数据服务器之间的API

时间:2015-07-15 12:35:50

标签: php security authentication ssl

我正在PHP网站的服务器A 上构建一个客户区,它将请求发送到单独的数据服务器(服务器B),要求提供与之相关的原始数据特定客户的项目。

系统需要合理安全,但在合理范围内(我需要在易于实施和安全性之间取得平衡)。

这是我第一次建立一个具有这种安全要求的系统,所以不确定(a)应该达到什么样的平衡,以及(b)首先有多种可能的方法是有意义的。 / p>

有些观点:

  • 服务器A和B是唯一涉及的两台机器(当然除了客户端机器浏览服务器A)
  • 客户必须无法向其分配的项目请求数据
  • 客户可以指定项目和日期范围,但没有别的
  • 服务器之间的连接必须是安全的,以防止窥探数据
  • 数据传输是单向的 - Web服务器只发送请求
  • 系统流量很低,因此请求开销不是很大问题 - 按照每天几十个请求的顺序

我正在想像 / userid / deviceid / daterange 这样的调用 REST api 但是我不清楚如何保护传输并阻止客户端访问通过制定URL方案,其他客户的数据。

似乎 SSL 是确保数据传输安全的最低要求,但我不确定用户之间的身份验证和封锁。

方法的想法

为每个客户提供一个唯一的密钥。对于每个请求,这将使用请求参数进行哈希处理,并与请求的纯文本版本一起发送,如下所示:

 Hash: 202745aff8ed5354f2a8cce94b324afecfad56465cb48d676fd230fa6f2a18f5

 Request params: /123/456/2015010120150714

服务器B对存储的密钥和请求参数执行散列,并检查这是否与已发送的内容匹配。如果是,并且用户ID,设备ID和日期范围有效,则它将响应所请求的数据。

这种方法的明显弱点是关键 - 如果存储在Web服务器上的副本被泄露,那么任何人如果知道用户ID和设备ID,就可以从数据服务器请求数据。通过仅接受来自Web服务器IP的请求可以稍微减轻这种情况,但如果受到恶意脚本的攻击,这将无效。

任何建议都会有所帮助。正如我所说的那样,对于安全方面我是相当noobian所以请温柔!

修改

客户端登录服务器A上的CMS;服务器A和服务器B之间的连接不需要他们的凭证 - 这个问题唯一的认证是确保只有服务器A可以与服务器B通信,并且该通信是安全的。

如果已经进行了SSL握手,那么进一步考虑它是否足以从PHP中的Web服务器发出POST请求?

0 个答案:

没有答案