情境:
我有一个运行php的网络服务器,我希望能够安全地向运行nodejs的单独服务器发送请求并获得回复。 节点服务器永远不需要自己向Web服务器发送任何内容,例如通知/更新。所以我认为我不需要websockets提供的双向通信。
PHP向节点发送请求,节点处理请求,发送回数据(最有可能是JSON),php继续使用返回的数据。
问题
我拥有服务器运行节点,但是网络服务器已不复存在。我需要一种方法来确保进入节点服务器的任何请求实际上来自网络服务器而不是某人/其他人,我需要加密请求和响应数据。
我已经收集了我不想依赖像检查IP地址这样简单的东西,我知道网络服务器和节点服务器必须都有一些共享的秘密信息/算法来编码数据。我可以自己实现这个,但我知道这个问题已经通过一些加密协议/库解决了。 我熟悉加密和密钥的概念,但我从来没有实现它们。
问题
答案 0 :(得分:2)
我建议使用REST API在两个Web服务器之间进行交互。
REST API用于这些类型的实现。
如果您可以构建适当的身份验证策略,那么通信应该是安全的。如果在节点上启用SSL,则会加密通信。您还可以通过IP地址,主机名和用户代理字符串进行限制。
使用SSL进行基于令牌的身份验证应该具有足够的安全性。利用实现随机数的策略,并始终使令牌过期。
实施CSRF策略以防止MITM攻击。
构建基于令牌的策略,该策略依赖于常见的加密方法,例如: