Dans les applications Web réelles, la transmission des données (par exemple, les demandes et réponses HTTP) peuvent être interceptées et falsifiés avec malveillance. Afin de vérifier l'intégrité des données et d'éviter que les données soient modifiées au milieu, nous pouvons utiliser l'algorithme de hachage pour vérifier les données. En ajoutant la valeur de hachage des données à la demande ou à la réponse, le récepteur peut utiliser le même algorithme de hachage pour recalculer la valeur de hachage des données reçues et les comparer avec la valeur de hachage qui l'accompagne pour déterminer si les données ont été falsifiées pendant la transmission.
Tout d'abord, nous devons utiliser un algorithme de hachage (comme SHA256) pour générer la valeur de hachage de la demande ou de la réponse. Dans PHP, vous pouvez utiliser la fonction hash () pour générer des valeurs de hachage. Voici l'exemple de code pour générer des valeurs de hachage:
$data = "Contenu des données sensibles"; // Remplacez-le par les données que vous souhaitez transmettre
$hash_value = hash('sha256', $data); // Générer des donnéesSHA256Valeur de hachage
Dans cet exemple, nous utilisons l'algorithme de hachage SHA256. Vous pouvez choisir différents algorithmes de hachage en fonction de vos besoins, tels que MD5 ou SHA512.
Pour garantir l'intégrité des données, nous pouvons ajouter la valeur de hachage à l'en-tête de la demande HTTP. La bibliothèque Curl peut être utilisée pour envoyer des demandes HTTP avec des valeurs de hachage pour s'assurer que le serveur peut vérifier l'intégrité des données lors de la réception de la demande.
$url = "https://m66.net/api/verify"; // DemandéURL,Remplacer parm66.netnom de domaine
$data = "Contenu des données sensibles"; // Données à envoyer
$hash_value = hash('sha256', $data); // Générer des donnéesValeur de hachage
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-Data-Hash: ' . $hash_value // 将Valeur de hachage添加到请求头中
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
Dans le code ci-dessus, nous envoyons la valeur de hachage au serveur en tant que champ d'en-tête HTTP personnalisé X-Data-Hash . Cela permet au serveur d'avoir une vérification de hachage lorsque les données sont reçues.
Une fois que le serveur a reçu la demande, il doit vérifier que la valeur de hachage des données est cohérente avec la valeur de hachage attachée à la demande. Nous pouvons recalculer la valeur de hachage des données reçues du côté serveur et la comparer avec la valeur de hachage dans l'en-tête de demande.
$received_hash = $_SERVER['HTTP_X_DATA_HASH']; // 获取请求头中的Valeur de hachage
$received_data = file_get_contents('php://input'); // Obtenez les données dans le corps de la demande
// 重新计算接收到数据的Valeur de hachage
$calculated_hash = hash('sha256', $received_data);
// 比较计算出的Valeur de hachage与请求中的Valeur de hachage
if ($received_hash === $calculated_hash) {
echo "Les données sont complètes,Pas falsifié";
} else {
echo "Les données peuvent avoir été falsifiées,Échec de la vérification";
}
Du côté du serveur, nous obtenons d'abord la valeur de hachage dans l'en-tête de demande HTTP et recalculons la valeur de hachage des données dans le corps de la demande. Si les deux sont cohérents, les données n'ont pas été falsifiées. S'il est incohérent, cela signifie que les données peuvent être modifiées de manière malveillante pendant la transmission.
En plus de demander la vérification du hachage des données, nous pouvons également ajouter des valeurs de hachage à la réponse du serveur pour la vérification pour empêcher les données de réponse d'être falsifiées pendant la transmission. De même, le serveur peut générer un hachage des données de réponse et l'ajouter à l'en-tête de réponse.
$response_data = "C'est ce que le serveur répond"; // Données de réponse du serveur
$response_hash = hash('sha256', $response_data); // 计算响应数据的Valeur de hachage
header('X-Response-Hash: ' . $response_hash); // 将Valeur de hachage添加到响应头部
echo $response_data;
Le client peut recevoir les données de réponse et les valeurs de hachage dans l'en-tête de réponse et la vérification de hachage des données de réponse pour assurer son intégrité.
Grâce à la technologie de vérification de hachage en temps réel, nous pouvons prévenir efficacement les attaques de l'homme dans le milieu. La mise en œuvre de cette fonctionnalité dans PHP est très simple, utilisez simplement l'algorithme de hachage pour générer le hachage des données et le transmettre au récepteur pour vérification via l'en-tête de demande HTTP ou l'en-tête de réponse. Bien que cette méthode ne puisse pas remplacer la communication cryptée, elle peut servir de supplément efficace pour améliorer la sécurité pendant la transmission des données.