Php 通过curl和mcrypt在两台服务器之间建立链接

Php 通过curl和mcrypt在两台服务器之间建立链接,php,curl,mcrypt,Php,Curl,Mcrypt,我在两个地方有两台服务器。 服务器1通过与自定义用户代理的php CURL会话减去服务器2的客户机信息(如地址、电子邮件和电话号码),服务器2对此进行检查。服务器2提供一个JSON字符串 我想确定两件事: 如果有人嗅探我的包,它将看不到实际数据 如果有人试图调用服务器2上的php页面(使用正确的 用户代理)收到了一些对他们来说没有意义的东西 (例如:客户的电子邮件或电话号码) 在研究了不同的方法之后,我想在服务器2上加密JSON文本字符串;从服务器1获取curl;并使用共享密钥对其进行解密 我想

我在两个地方有两台服务器。 服务器1通过与自定义用户代理的php CURL会话减去服务器2的客户机信息(如地址、电子邮件和电话号码),服务器2对此进行检查。服务器2提供一个JSON字符串

我想确定两件事:

  • 如果有人嗅探我的包,它将看不到实际数据
  • 如果有人试图调用服务器2上的php页面(使用正确的 用户代理)收到了一些对他们来说没有意义的东西 (例如:客户的电子邮件或电话号码)
  • 在研究了不同的方法之后,我想在服务器2上加密JSON文本字符串;从服务器1获取curl;并使用共享密钥对其进行解密

    我想知道的事情:

  • 我应该使用哪种密码
  • 这是不是太过分了
  • 还是有更好的方法来实现这一点
  • 顺便说一句:合并这两个服务器不是一个选项

  • 不,这并不过分。在服务器之间传输期间对数据进行加密是一种很好的做法
  • 除了您的自定义用户代理,您的服务器当然也有静态IP地址?进行IP检查。如果IP不是您期望的,只需显示403禁止的默认屏幕,让窥探用户认为他们被Apache锁定,而不是您的脚本

  • 至于哪个密码,我真的帮不上忙。有一个google。

    与其实现自己的加密例程,我建议通过https从服务器2提供json数据,这将很好地解决加密问题

    请注意,您不需要购买证书,您可以对server2进行自签名,并让server1中的curl允许“不安全”的https连接(不安全意味着证书不受信任,但数据仍然是加密的)

    若要将允许从服务器2请求数据的用户列入白名单,请按ip列出白名单(如果可以)。另一种方法(或另外一种方法)是使用共享秘密的简单签名系统

    为了举例说明,在服务器1发出请求时设置一个自定义http头(比如“我的签名”),并使用设置签名“算法”(下面是php中的简单示例):

    然后,您可以设置请求标头:

    My-Signature: $sig
    
    你可以让你的签名系统复杂到你想要的程度。其思想是,server2知道相同的签名“配方”,可以从请求头、查询字符串和post有效负载中提取它所需的所有字段,并使用共享密钥计算其签名

    将计算出的签名与My signature头中传递的签名进行比较,如果匹配,则为请求提供服务。如果没有,请提供403响应页面

    My-Signature: $sig