2011-01-14 44 views
6

私たちは機密データをMySQLに保存していますが、AES_ENCRYPT(data、 'my-secret-key-here')を使用してAES_DECRYPTを使用します。私の最大の疑問は、鍵をどのようにして保護するかです。以前私はワストウェブPHPファイル内のキーを格納し、そのような何か:誰かがアクセス権を取得ので、もし私たちのMySQLサーバとWebサーバが、同じ物理マシンあるようAES_ENCRYPTを使用してMySQLでデータを安全に保存する方法

define("ENCRYPTION_KEY", 'my-secret-key-here'); 

は、これは本当に、しかし動作しません。サーバーには、MySQLに格納された暗号化されたデータとキーの両方を取得できます。

アイデア?私は別のサーバーにキーを移動し、リモートでそれを読む必要があると思っています。あるいは、各データに対して暗号鍵を動的に生成することはどうでしょうか?たとえば、customer_idを取得してmd5を実行し、それをキーとして使用します。

答えて

0

秘密鍵をファイルに入れて、ファイル所有者をWebサーバーと同じユーザーに変更します。グループおよび他のすべてのユーザーのファイルに対するすべてのアクセス許可を削除します。

Superuser(https://superuser.com/questions/139393/linux-file-permissions-access-control-query)にも同様の質問があります。あなたが実行しているシステムのファイルアクセス許可の詳細については、グーグルグーグルでより良い助けを得ることができます。

+0

特定のファイルのアクセス許可を教えてください。 – mozgras

0

カップルのオプション:あなたは本当に重要なオフサイトに保存したい場合は、別のマシンからドライブを「マウント」

    1. は、適切な権限を持つファイルへの復号鍵を保存します。あなたはまだ適切に権限を設定する必要があります。

    マスターパスワードはサーバーにアクセスできる必要があります。つまり、完全に壁を塞ぐ方法はありません。あなたができることは、ユーザー/グループのアクセス許可を設定し、それがWebルートの外側にあることを確認することです。

    値をプレーンテキストにデコードする必要がない場合(つまり、パスワードなどの値を単に比較する場合)は、代わりにハッシュを使用することを検討してください。

  • 関連する問題