【问题标题】:securely send data from one site to another?安全地将数据从一个站点发送到另一个站点?
【发布时间】:2009-06-25 17:37:26
【问题描述】:

我要将一些数据从一个网站发布到另一个网站。我需要一种方法让接收网站确保数据是从发送网站发送的,而不是由其他恶意用户发送的。我正在使用 PHP4。

我该怎么做?

谢谢!

【问题讨论】:

  • PHP4 自 2007 年底以来一直不受支持。此后一直没有针对它的安全修复程序。因此,目前这可能是比您自己的代码更大的安全问题。

标签: php security php4 data-transfer


【解决方案1】:

只需使用双向 ssl。客户端使用 ssl 证书在服务器上对自己进行身份验证,而不仅仅是相反。

所以服务器知道他获取数据表单是正确的客户端。

客户端知道他将数据发送到正确的服务器

【讨论】:

  • 您知道有关如何执行此操作的任何教程吗?谢谢。
【解决方案2】:

对于纯 PHP 解决方案:

如果您可以保密(在两端),那么您可以使用Keyed-Hash Message Authentication Code (HMAC or KHMAC). 的自我实现的变体(是的,变体)

这个概念是,如果你在两端有相同的秘密,你可以在发送端散列(消息+秘密),在接收端散列(消息+秘密)。如果哈希匹配,那么你有一个有效的消息。

秘密就是钥匙(双关语)。因为没有秘密,攻击者不可能更改消息并生成将在接收端验证的新哈希。

以下是一些 PHP 代码示例:

// On the sending end:
define('SECRET', '12734981273912379128739128739127938794729327492');
$message = 'your-message';
$packet = $message . sha1($message . SECRET);

// On the receiving end:
define('SECRET', '12734981273912379128739128739127938794729327492');
$message = substr($packet, 0, -40);
if(sha1($message . SECRET) != substr($packet, -40))
    throw new Exception("Message Authentication failed!")
else
    do_something_with($message);

如果您希望黑客重新发布相同消息时获得额外的安全性,您可以为每个请求添加一个随机请求标识符,并确保永远不会接受相同的哈希。

免责声明:与所有安全敏感代码一样,在信任敏感数据之前,应进行同行评审和验证。通过对该主题的研究,或者更好的是,使用处理此类验证+身份验证的现有库。

【讨论】:

  • 另一个免责声明:这会公开发送信息,尽管它确实按要求执行并防止注入
【解决方案3】:

jitter 的解决方案(双向 SSL)有效。但是,一种可能更简单的方法是使用单向 SSL(验证接收服务器)和基本验证。 SSL 提供机密性,Basic Auth 对客户端进行身份验证。

【讨论】:

    【解决方案4】:

    我会考虑使用 GnuPG:http://devzone.zend.com/article/1265

    【讨论】:

      【解决方案5】:

      我投票支持 SSL,但作为替代方案。

      如果两个站点都知道密钥 (SK),那么,

      1. website1 (WS1) 可以向 website2 (WS2) 发送一个 nonce (N1)
      2. WS2 可以向 WS1 发送一条消息,其中包含:
        • 数据(可以使用密钥加密)
        • md5(SK . N1)(即证明 WS2 知道 SK)
        • md5(SK .data)(即证明数据未被第三方操纵

      【讨论】:

        猜你喜欢
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 2013-12-09
        • 2011-07-28
        • 1970-01-01
        • 2018-06-15
        • 2011-06-03
        • 1970-01-01
        相关资源
        最近更新 更多