【问题标题】:Link between two servers via curl and mcrypt通过 curl 和 mcrypt 连接两台服务器
【发布时间】:2012-03-28 19:06:50
【问题描述】:

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

我想确认两件事:

  1. 如果有人嗅探我的包裹,它不会看到实际数据;
  2. 如果有人试图调用服务器 2 上的 php 页面(使用正确的 用户代理)en得到了一些对他们没有意义的东西 (例如:客户的电子邮件或电话号码)。

在查看了不同的方法后,我想在服务器 2 上加密 JSON 文本字符串;从服务器 1 使用 curl 获取它;并使用共享密钥对其进行解密。

我想知道的事情:

  1. 我应该使用哪种密码?
  2. 这是矫枉过正吗?
  3. 或者有没有更好的方法来实现这一点?

顺便说一句:合并两台服务器不是一种选择!

【问题讨论】:

    标签: php curl mcrypt


    【解决方案1】:
    1. 不,这不是矫枉过正。在服务器之间传输期间对数据进行加密是一种很好的做法。
    2. 除了您的自定义用户代理之外,您的服务器肯定也有静态 IP 地址吗?做一个IP检查。如果 IP 不是您所期望的,只需显示 403 禁止默认屏幕,让窥探用户认为他们被 Apache 锁定,而不是您的脚本。

    至于哪个 Cipher,我真的无能为力。有一个谷歌。

    【讨论】:

      【解决方案2】:

      我建议不要实现您自己的加密例程,而是通过 https 从服务器 2 提供您的 json 数据,这样可以很好地处理加密。

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

      将允许从服务器 2 请求数据的人列入白名单,如果可以的话,按 ip 列入白名单。另一种方式(或附加方式)可能是一个具有共享秘密的简单签名系统。

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

      $sig = sha1($user_agent
                  . $date_header_value
                  . $http_request_path
                  . $http_query_string
                  . $http_raw_post_payload
                  . $shared_secret);
      

      然后就可以设置请求头了:

      My-Signature: $sig
      

      您可以根据需要使您的签名系统变得复杂。这个想法是 server2 知道相同的签名“recipe”,可以从请求标头、查询字符串和 post 有效负载中提取它需要的所有字段,并使用共享密钥来计算其侧的签名。

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

      【讨论】:

        猜你喜欢
        • 2014-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 2016-09-25
        相关资源
        最近更新 更多