Position actuelle: Accueil> Derniers articles> Comment implémenter une communication cryptée sécurisée entre JavaScript et PHP

Comment implémenter une communication cryptée sécurisée entre JavaScript et PHP

gitbox 2025-07-27

introduction

JavaScript et PHP sont deux langages de programmation couramment utilisés dans le développement Web. Dans certaines applications, en particulier lorsque des données sensibles sont impliquées, il devient particulièrement important d'assurer la sécurité pendant la transmission des données. Cet article montrera comment réaliser une communication cryptée sécurisée entre JavaScript et PHP via l'algorithme de chiffrement symétrique AES.

Principes de la communication cryptée

Le principe de base de la communication cryptée est de crypter les données via des algorithmes de chiffrement pour garantir que les données ne seront pas volées ou falsifiées par des tiers pendant la transmission. Dans cet article, nous utilisons l'algorithme de cryptage symétrique AES (norme de cryptage avancé), c'est-à-dire que le chiffrement des données et le décryptage sont utilisés avec la même clé.

Dans ce processus, JavaScript est responsable de la génération d'une clé aléatoire et de l'envoi au serveur PHP. Le côté PHP utilise cette clé pour crypter les données et la transmettre à JavaScript. Enfin, JavaScript utilise la même clé pour décrypter les données et restaurer les données d'origine.

Étapes pour mettre en œuvre la communication cryptée

Générer une clé

Tout d'abord, utilisez la bibliothèque CryptoJS en JavaScript pour générer une clé aléatoire pour les opérations de cryptage et de décryptage. Une clé aléatoire de 16 octets peut être générée par le code suivant:

 var key = CryptoJS.lib.WordArray.random(16);

Ce code génère une clé aléatoire de 16 octets via la bibliothèque CryptoJS. La longueur de la clé peut être ajustée au besoin lors de l'utilisation.

Envoyez la clé à PHP

Après avoir généré la clé, nous devons l'envoyer au serveur PHP de manière sécurisée. La clé peut être transférée dans un fichier PHP pour traitement via la demande Ajax:

 var xhr = new XMLHttpRequest();
xhr.open("POST", "send_key.php", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log("Key sent successfully to PHP");
  }
};
xhr.send("key=" + key);

Le code ci-dessus envoie la clé à PHP dans une demande de poste, et il sera utilisé pour crypter les données après avoir reçu la clé.

Données cryptées

En JavaScript, les données sont chiffrées à l'aide de l'algorithme AES et les résultats de chiffrement sont transmis à PHP pour le traitement ultérieur:

 var dataToEncrypt = "Hello, World!";
var encryptedData = CryptoJS.AES.encrypt(dataToEncrypt, key).toString();

Ce code cryptera la chaîne "Hello, World!" avec une clé et les données chiffrées résultantes sont enregistrées dans la variable EncryptedData.

Décrypter les données

Dans PHP, nous utilisons la méthode de décryptage AES fournie par l'extension OpenSSL pour décrypter les données cryptées:

 $encryptedData = $_POST['encryptedData'];
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-ECB', $key);

Ce code obtient des données cryptées à partir de la demande de poste et les décrypte à l'aide d'une clé pour enfin obtenir les données décryptées.

Résumer

Cet article montre comment réaliser une communication sécurisée entre les données entre JavaScript et PHP via un algorithme de chiffrement symétrique AES. Grâce aux étapes de la génération de clés, de la transmission des clés, du chiffrement et du décrétage des données, nous pouvons assurer la sécurité des données. Il convient de noter que dans les applications pratiques, la sécurité du processus de transmission doit être encore améliorée pour garantir la protection de la clé et l'efficacité du processus de chiffrement.

Grâce aux exemples de cet article, vous devriez être en mesure de comprendre et de mettre en œuvre une communication chiffrée entre JavaScript et PHP, améliorant ainsi la sécurité de vos applications Web.