0

ある Web サイトから別の Web サイトにデータを投稿します。データが送信元の Web サイトから送信されたものであり、他の悪意のあるユーザーによって送信されたものではないことを、受信側の Web サイトで確認する方法が必要です。PHP4を使用しています。

これどうやってするの?

ありがとう!

4

5 に答える 5

3

双方向SSLを使用するだけです。クライアントは、その逆だけでなく、ssl 証明書を使用してサーバーで自身を認証します。

したがって、サーバーは、データフォームを取得するのが適切なクライアントであることを認識しています。

クライアントは、データを適切なサーバーに送信することを知っています

于 2009-06-25T17:45:27.103 に答える
1

ジッターのソリューション (双方向 SSL) が機能します。ただし、おそらくより簡単な方法は、一方向 SSL (受信サーバーの認証) と Basic Auth を使用することです。SSL は機密性を提供し、基本認証はクライアントを認証します。

于 2009-06-25T17:48:58.257 に答える
1

PHP のみのソリューションの場合:

(両端で) 秘密を保持できる場合は、Keyed-Hash Message Authentication Code (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);

ハッカーが同じメッセージを再投稿することに対して追加のセキュリティが必要な場合は、ランダムなリクエスト識別子を各リクエストに追加し、同じハッシュが決して受け入れられないようにすることができます。

免責事項: これはすべてのセキュリティ上重要なコードと同様に、機密データを信頼する前にピア レビューおよび検証する必要があります。このトピックに関する調査を行うか、このタイプの検証と認証を処理する既存のライブラリを使用することをお勧めします。

于 2009-06-25T17:54:55.483 に答える
0

GnuPG の使用を検討します: http://devzone.zend.com/article/1265

于 2009-06-25T17:39:34.863 に答える
0

私の投票はSSLですが、代替手段としてです。

両方のサイトが秘密鍵 (SK) を知っている場合、

  1. website1 (WS1) は、website2 (WS2) に nonce (N1) を送信できます。
  2. WS2 は、以下を含むメッセージを WS1 に送信できます。
    • データ (秘密鍵を使用して暗号化できます)
    • md5(SK . N1) (つまり、WS2 が SK を知っていることの証明)
    • md5(SK . data) (つまり、データが第三者によって操作されていないことの証明)
于 2009-06-25T17:55:17.450 に答える