実際のWebアプリケーションでは、データ送信(たとえば、HTTPリクエストや応答)は、悪意を持って傍受され、改ざんされている場合があります。データの整合性を検証し、中央でデータが変更されるのを防ぐために、ハッシュアルゴリズムを使用してデータを確認できます。データのハッシュ値を要求または応答に追加することにより、受信者は同じハッシュアルゴリズムを使用して、受信したデータのハッシュ値を再計算し、添付のハッシュ値と比較して、送信中にデータが改ざんされているかどうかを判断できます。
まず、リクエストまたは応答のハッシュ値を生成するには、ハッシュアルゴリズム(SHA256など)を使用する必要があります。 PHPでは、 hash()関数を使用してハッシュ値を生成できます。ハッシュ値を生成するためのサンプルコードは次のとおりです。
$data = "機密データコンテンツ"; // これを送信するデータに置き換えます
$hash_value = hash('sha256', $data); // データを生成しますSHA256ハッシュ値
この例では、SHA256ハッシュアルゴリズムを使用します。 MD5やSHA512などのニーズに基づいて、さまざまなハッシュアルゴリズムを選択できます。
データの整合性を確保するために、HTTP要求のヘッダーにハッシュ値を追加できます。 CURLライブラリを使用して、ハッシュ値を使用してHTTPリクエストを送信して、リクエストを受信するときにサーバーがデータの整合性を確認できるようにすることができます。
$url = "https://m66.net/api/verify"; // リクエストURL,置き換えますm66.netドメイン名
$data = "機密データコンテンツ"; // 送信されるデータ
$hash_value = hash('sha256', $data); // データを生成しますハッシュ値
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-Data-Hash: ' . $hash_value // 将ハッシュ値添加到请求头中
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
上記のコードでは、カスタムHTTPヘッダーフィールドX-DATA-HASHとしてハッシュ値をサーバーに送信します。これにより、データが受信されたときにサーバーがハッシュ検証をすることができます。
サーバーがリクエストを受信した後、データのハッシュ値がリクエストに添付されたハッシュ値と一致していることを確認する必要があります。サーバー側の受信したデータのハッシュ値を再計算し、リクエストヘッダーのハッシュ値と比較できます。
$received_hash = $_SERVER['HTTP_X_DATA_HASH']; // 获取请求头中的ハッシュ値
$received_data = file_get_contents('php://input'); // リクエスト本文のデータを取得します
// 重新计算接收到数据的ハッシュ値
$calculated_hash = hash('sha256', $received_data);
// 比较计算出的ハッシュ値与请求中的ハッシュ値
if ($received_hash === $calculated_hash) {
echo "データは完了しました,改ざんされていません";
} else {
echo "データが改ざんされている可能性があります,検証に失敗しました";
}
サーバー側では、最初にHTTPリクエストヘッダーでハッシュ値を取得し、リクエスト本文のデータのハッシュ値を再計算します。 2つが一貫している場合、データは改ざんされていません。一貫性がない場合、それは伝送中にデータが悪意を持って変更される可能性があることを意味します。
データのハッシュ検証を要求することに加えて、送信中に応答データが改ざんされないように、検証のためにサーバー応答にハッシュ値を追加することもできます。同様に、サーバーは応答データのハッシュを生成し、応答ヘッダーに追加できます。
$response_data = "これがサーバーが応答するものです"; // サーバー応答データ
$response_hash = hash('sha256', $response_data); // 计算响应数据的ハッシュ値
header('X-Response-Hash: ' . $response_hash); // 将ハッシュ値添加到响应头部
echo $response_data;
クライアントは、応答ヘッダーの応答データとハッシュ値を受信し、その完全性を確保するために応答データのハッシュ検証を受信できます。
リアルタイムのハッシュ検証技術を通じて、中間の攻撃を効果的に防ぐことができます。この機能をPHPに実装することは非常に簡単です。ハッシュアルゴリズムを使用してデータのハッシュを生成し、HTTPリクエストヘッダーまたは応答ヘッダーを介して検証のために受信機に渡すだけです。この方法は暗号化された通信を置き換えることはできませんが、データ送信中のセキュリティを改善するための効果的なサプリメントとして機能します。