我要将一些数据从一个网站发布到另一个网站。我需要一种方法让接收网站确保数据是从发送网站发送的,而不是由其他恶意用户发送的。我使用的是PHP4。
我该怎么做?
谢谢!
答案 0 :(得分:3)
只需使用双向ssl。客户端使用ssl证书在服务器上进行身份验证,而不仅仅是相反。
所以服务器知道它是正确的客户端,他获得了数据表格。
客户端知道他将数据发送到正确的服务器
答案 1 :(得分:1)
抖动解决方案(双向SSL)有效。但是,一种可能更简单的方法是使用单向SSL(验证接收服务器)和Basic Auth。 SSL提供机密性,Basic Auth对客户端进行身份验证。
答案 2 :(得分:1)
仅适用于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 :(得分:0)
我会考虑使用GnuPG:http://devzone.zend.com/article/1265
答案 4 :(得分:0)
我的投票是针对SSL,但作为替代方案。
如果两个站点都知道密钥(SK),那么,