私は 2 つの Web サイト間の通信およびデータ交換システムを準備しており、Stackoverflow コミュニティ メンバーから投稿された提案を使用して強化したいと考えています。
次の例を使用して、現在どのように行っているかを説明しましょう。
2つのウェブサイトがあります
- server-example.com (現在は SE.com と呼ばれます)
- client-example.com (現在は CE.com と呼ばれます)
サイト間のデータ交換を実行する前に、次の手順を実行します。
- openssl_* 関数を使用して、非同期キー ペアが SE.com で生成されます。
- 秘密鍵は SE.com に保管されます
- 公開鍵は、通常の HTTP 要求を介して CE.com に送信されます (詳細なプロセスは以下を参照)。
- 公開鍵は json_encode 関数を使用してエンコードされます
- エンコードされたデータは CE.com にプッシュされます
さらに遠く、
- CE.com がエンコードされたデータを受信すると、json_decode 関数を使用して PublicKey を取得します。
- CE.com は、カスタム関数を使用してランダムな文字列 (rkey と呼ばれる) を生成します
- rkey は openssl_public_encrypt 関数を使用して暗号化されます
- 暗号化されたデータは SE.com にプッシュされます
さらに遠く、
- 暗号化されたデータを受信すると、SE.com は openssl_private_decrypt を使用して復号化します
- 現在、SE.com には同じ rkey があります (CE.com と同じ)
ここで、SE.com が次の文字列「Hello World」を CE.com に送信する必要があるとします。
どちらのサイトにも、AES 暗号化/復号化用のカスタム ライブラリがあります。
- SE.com は、AES 暗号化機能を備えた rkey を使用して、暗号化されたテキストを生成します
- 生成された暗号化テキストは、json_encode 関数を使用してエンコードされ、CE.com にプッシュされます
今、CE.com は暗号化されたテキストを取得します
- 暗号化されたテキストを受信すると、json_decode を使用してデコードし、'Hello World' 文字列を取得します
質問
- 通信は Web セーフですか? Web セーフという意味では、SE.com と CE.com の間で送信されるデータは、GET 要求と同様の方法で転送できますか?
誰かが送信されたデータを送信途中で読み取ろうとした場合、それを解読して内容を確認できるかどうか?
また、セキュリティとコミュニケーションを改善するための提案を提供します。
助けていただければ幸いです。