【发布时间】:2009-06-25 17:37:26
【问题描述】:
我要将一些数据从一个网站发布到另一个网站。我需要一种方法让接收网站确保数据是从发送网站发送的,而不是由其他恶意用户发送的。我正在使用 PHP4。
我该怎么做?
谢谢!
【问题讨论】:
-
PHP4 自 2007 年底以来一直不受支持。此后一直没有针对它的安全修复程序。因此,目前这可能是比您自己的代码更大的安全问题。
标签: php security php4 data-transfer
我要将一些数据从一个网站发布到另一个网站。我需要一种方法让接收网站确保数据是从发送网站发送的,而不是由其他恶意用户发送的。我正在使用 PHP4。
我该怎么做?
谢谢!
【问题讨论】:
标签: php security php4 data-transfer
只需使用双向 ssl。客户端使用 ssl 证书在服务器上对自己进行身份验证,而不仅仅是相反。
所以服务器知道他获取数据表单是正确的客户端。
客户端知道他将数据发送到正确的服务器
【讨论】:
对于纯 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);
如果您希望黑客重新发布相同消息时获得额外的安全性,您可以为每个请求添加一个随机请求标识符,并确保永远不会接受相同的哈希。
免责声明:与所有安全敏感代码一样,在信任敏感数据之前,应进行同行评审和验证。通过对该主题的研究,或者更好的是,使用处理此类验证+身份验证的现有库。
【讨论】:
jitter 的解决方案(双向 SSL)有效。但是,一种可能更简单的方法是使用单向 SSL(验证接收服务器)和基本验证。 SSL 提供机密性,Basic Auth 对客户端进行身份验证。
【讨论】:
我会考虑使用 GnuPG:http://devzone.zend.com/article/1265
【讨论】:
我投票支持 SSL,但作为替代方案。
如果两个站点都知道密钥 (SK),那么,
【讨论】: