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