繁体   English   中英

安全地将数据从一个站点发送到另一个站点?

[英]securely send data from one site to another?

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

我怎样才能做到这一点?

谢谢!

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

因此服务器知道他是数据表的正确客户端。

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

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

对于仅PHP的解决方案:

如果您可以保守秘密(在两端),则可以使用密钥哈希消息身份验证代码(HMAC或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);

如果您希望黑客重新发布同一条消息来提高安全性,则可以向每个请求添加一个随机请求标识符,并确保绝不接受相同的哈希。

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

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

我的投票赞成SSL,但可以选择。

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

  1. 网站1(WS1)可以向网站2(WS2)发送一个随机数(N1)
  2. WS2可以向WS1发送包含以下内容的消息:
    • 数据(可以使用密钥加密)
    • md5(SK。N1)(即WS2知道SK的证明)
    • md5(SK。data)(即证明该数据未被第三方操纵的证据)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM