0

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

我怎样才能做到这一点?

谢谢!

4

5 回答 5

3

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

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

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

于 2009-06-25T17:45:27.103 回答
1

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

于 2009-06-25T17:48:58.257 回答
1

对于仅限 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);

If you wanted additional security from a hacker re-posting the same message, you could add a random request identifier to each request, and ensure that the same hash is NEVER accepted.

DISCLAIMER: this as with all security sensitive code should be peer reviewed and verified before being trusted with sensitive data. Do through research on the topic, or better yet, use an existing library that handles this type of verification+authentication.

于 2009-06-25T17:54:55.483 回答
0

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

于 2009-06-25T17:39:34.863 回答
0

My vote is for SSL, but as an alternative.

If both sites know a secret key (SK) then,

  1. website1 (WS1) can send website2 (WS2) a nonce (N1)
  2. WS2 can send WS1 a message that contains:
    • the data (could be encrypted using the secret key)
    • md5(SK . N1) (i.e. proof that WS2 knows SK)
    • md5(SK . data) (i.e. proof that the data was not manipulated by a third party
于 2009-06-25T17:55:17.450 回答