4

これは奇妙な質問に思えるかもしれませんが(そして、ほとんど答えていることをお詫びします)、他の質問への回答を読んだ後、私は心配していました:

localhost MYSQL データベースにデータを保存する php スクリプトがあります。その情報の一部は機密情報であり、MYSQL AES 暗号化機能を使用して暗号化されています。

MYSQL は接続中のデータを暗号化しないと読みました。これは、localhost 接続を扱った最近の 2 つの返信で言及されていたので、私の懸念事項です。

データは同じコンピュータ内で内部的に渡されているため、傍受のリスクはゼロだと常に考えていました。では、そうではありませんか?データを保存する前に PHP で暗号化する必要がありますか?

mysqli_* を使用しています

サーバーへの接続はSSL経由です。

現在は共有仮想サーバーを使用していますが、開発が完了したら専用マシンに移行する予定です。

専門家が私の心を休ませるか、私がこれをどのように行うべきか教えてください.

4

1 に答える 1

2

ご想像のとおり、ローカル接続に SSL を使用するのは無意味です。SSL の主な目的は、中間者のような攻撃を防ぐためにチャネルを暗号化することです。しかし、ローカル接続の場合、中間者は存在しません。セットアップでは、ローカルソケットを介した接続をお勧めし、TCPレイヤーを完全にバイパスします。

では質問に戻ります。

データを保存する前に PHP で暗号化する必要がありますか?

いいえ、データベースがスクリプトを実行するマシンと同じマシン上にある場合。

いいえ、データベースがリモートで、リンクが信頼されている場合 (リンク自体を信頼するか、リンクが SSL などで保護されている場合)。

はい、他のすべての状況で。

後者の場合 (リモート データベースへの信頼できないリンク)AES_ENCRYPT()は適切ではありません。暗号化/復号化プロセスは MySQL によって行われます。データは、PHP と MySQL の間で暗号化されずに転送されます。また、暗号化キーを MySQL のAES_ENCRYPT()およびに渡す必要があるためAES_DECRYPT()、このキーは通常、残りの SQL クエリとともに暗号化されずに送信されます。

于 2013-06-09T07:32:29.000 に答える