PHP/mySQL
クレジットカード情報を保存するためのセットアップを実装します。
進むべき道のようAES_ENCRYPT/AES_DECRYPT
ですが、
しかし、私はまだ1つの点で混乱しています:
暗号化キーを安全に保つにはどうすればよいですか?
私のPHPスクリプト(データベースと同じサーバー上にある)にそれを配線することは、主要なセキュリティホールのようです。
ここでの「ベストプラクティス」ソリューションは何ですか?
本当に CC# を保持する必要があるかどうかについて、じっくりと考える必要があります。特別な理由がない場合は、やめてください。隔週で、どこかの企業が侵害され、CC# が盗まれたという話を耳にします。これらの企業はすべて致命的な欠陥を犯していました - 彼らはあまりにも多くの情報を保持していました. トランザクションがクリアされるまで CC# を保持します。その後、削除してください。
サーバーを保護するための最善の方法は、ハードウェアを保護し、MySQL への内部システム ソケットを使用して、MySQL サーバーへのネットワーク アクセスをブロックすることです。システム権限と MySQL 権限の両方を使用して、必要最小限のアクセスを許可していることを確認してください。一部のスクリプトでは、書き込み専用認証を検討する場合があります。誰にでもできる暗号化方法は実際にはありません (常に復号化する必要があり、したがってキーを保存する必要があるため)。これは、そうすべきではないと言っているわけではありません。キーを 1 つの場所に保存することができ、システムの侵害を検出した場合、ファイルを破棄してデータを役に立たなくすることができます。
MySQL では、機密データを保護するために実行できる 6 つの簡単な手順があります。
ステップ 1: 付与テーブルのワイルドカードを削除する
ステップ 2: 安全なパスワードの使用を要求する
注: MySQL の「--secure-auth」オプションを使用して、古い安全性の低い MySQL パスワード形式の使用を防止します。
手順 3: 構成ファイルのアクセス許可を確認する
ステップ 4: クライアントとサーバー間の通信を暗号化する
ステップ 5: リモート アクセスを無効にする
ステップ 6: MySQL アクセス ログを積極的に監視する
セキュリティ ツール
同意しますが、必要がなければ cc しないでください。ただし、本当に持っている場合は、それを含むファイルが Web 上でアクセスできないことを確認してください。キーを返すバイナリを作成できます。このようにして、クリアテキストで保存されません。ただし、サーバーが侵害されている場合でも、簡単に入手できます。
必要なセキュリティはアプリケーションによって異なります。たとえば、cc# が使用されるのがユーザーのログイン時のみである場合 (シン オンライン ストア タイプのシナリオ)、cc# をユーザーのプレーンテキスト パスワードのハッシュで暗号化できます。ユーザーソルト、および専用の cc# ソルト。この値を永続的に保存しないでください。
この値を保存していないため、この値を取得できるのは、ユーザーがパスワードを入力してログインするときだけです。セッションの有効期限とガベージ コレクションのポリシーが適切であることを確認してください。
この状況に当てはまらない場合は、より適切な回答を提供できるよう、状況を詳しく説明してください。