現在の位置: ホーム> 最新記事一覧> JavaScriptとPHPの間に安全な暗号化された通信を実装する方法

JavaScriptとPHPの間に安全な暗号化された通信を実装する方法

gitbox 2025-07-27

導入

JavaScriptとPHPは、Web開発で一般的に使用される2つのプログラミング言語です。一部のアプリケーションでは、特に機密データが関係する場合、データ送信中にセキュリティを確保することが特に重要になります。この記事では、AES対称暗号化アルゴリズムを介してJavaScriptとPHPの間の安全な暗号化された通信を実現する方法を示します。

暗号化されたコミュニケーションの原則

暗号化された通信の基本原則は、暗号化アルゴリズムを介してデータを暗号化して、送信中にサードパーティによってデータが盗まれたり改ざんされたりしないようにすることです。この記事では、対称暗号化アルゴリズムAES(高度な暗号化標準)を使用します。つまり、データ暗号化と復号化が同じキーで使用されます。

このプロセスでは、JavaScriptはランダムキーを生成し、PHPサーバーに送信する責任があります。 PHPサイドはこのキーを使用してデータを暗号化し、JavaScriptに送信します。最後に、JavaScriptは同じキーを使用してデータを復号化し、元のデータを復元します。

暗号化された通信を実装する手順

キーを生成します

まず、JavaScriptのCryptojsライブラリを使用して、暗号化と復号化操作のランダムキーを生成します。 16バイトのランダムキーは、次のコードで生成できます。

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

このコードは、Cryptojsライブラリを介してランダムな16バイトキーを生成します。キーの長さは、使用すると必要に応じて調整できます。

キーをPHPに送信します

キーを生成した後、安全な方法でPHPサーバーに送信する必要があります。キーは、AJAXリクエストを介して処理するためにPHPファイルに転送できます。

 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);

上記のコードは、POSTリクエストでキーをPHPに送信し、キーを受信した後にデータを暗号化するために使用されます。

暗号化されたデータ

JavaScriptでは、データはAESアルゴリズムを使用して暗号化され、暗号化結果は後続の処理のためにPHPに送信されます。

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

このコードは、文字列「Hello、World!」を暗号化します。キーと結果の暗号化されたデータが可変暗号化されたデータに保存されます。

データを復号化します

PHPでは、OpenSSL拡張が提供するAES復号化方法を使用して、暗号化されたデータを復号化します。

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

このコードは、POSTリクエストから暗号化されたデータを取得し、キーを使用してそれを復号化して最終的に復号化されたデータを取得します。

要約します

この記事では、AES対称暗号化アルゴリズムを介して、JavaScriptとPHP間の安全なデータ暗号化された通信を実現する方法を示します。キーを生成し、キーの送信、暗号化、データの復号化の手順を通じて、データのセキュリティを確保することができます。実際のアプリケーションでは、キーの保護と暗号化プロセスの有効性を確保するために、伝送プロセスのセキュリティをさらに強化する必要があることに注意する必要があります。

この記事の例により、JavaScriptとPHPの間の暗号化された通信を理解して実装できるようになり、Webアプリケーションのセキュリティが改善されます。