1

ユーザーの連絡先情報を mysql データベースに一時的に保存する安全な方法が必要です。

顧客の機密情報が間違った手に渡ってしまうことを望まないので、これが私が探しているものです。

  • 意図した受信者だけが情報を復号化できる必要があります (ユーザー名は一意であり、署名/キーとして使用できますか?)
  • 暗号化は、関数内で完全に処理する必要があり、外部のプログラムやサービスを使用する必要はありません。つまり、エンド ユーザーには見えません。
  • 私はセキュリティの専門家とはかけ離れており、抜け穴がある可能性があるため、シンプルで、防弾で、理解しやすいものです。

誰か私に何かヒントはありますか?読むべき記事、私が見ることができるフレームワーク、またはいくつかのサンプルコード? どんな助けでも大歓迎です。

4

2 に答える 2

0

ええと、質問は実際には非常に良いものです。ただし、この種の問題が発生しないようにする方法が 1 つあります。しかし、最初に、ハッシュと暗号化の違いを明確にしたいと思います

ハッシュとは、サブジェクトを長いハッシュに変換することです。これを元に戻すことは非常に難しく、それを行うには多くのリソースが必要です。私たちは通常、パスワードなどをハッシュします暗号化は、データを安全に保存したいが、それを取り戻すことができるようにしたい場合です。それを別の長いものに変換しますが、簡単に元に戻すこともできます (キーがわかっている場合)

「ソルト」と呼ばれるものを使用して、パスワードなどのハッシュを保護できます。ハッシュ(x)はハッシュ(x+y)とは大きく異なることがわかっているため、それを使用できます。私があなただったら MD5 を使用しませんが、それでも素晴らしいですが、衝突が見られます (多くのハッシュ アルゴリズムには衝突がありますが、発見されるとセキュリティが低下します)。sha256/sha512 を使用することをお勧めします。それらは非常に安全であり、これまでのところ既知の衝突は見られていません.

私はオタクですが、あなたの問題は非常に単純です。この例では、phpのハッシュ関数を使用します。ユーザー名は一意であると言ったので、これを非常に安全なハッシュシステムに使用できます

$password = YOUR_PASSWORD_HERE;
$username = USERNAME_OF_USER;
$safe_hash = hash("sha512",$password.$username);

これにより、2 つのユーザー名とパスワードがマージされ、sha512 アルゴリズムでハッシュされます (必要に応じてアルゴリズムを変更してください)。これは、'password'.'user1' が 'password'.'user2' とは異なる一意のハッシュを持っているため、非常に安全です。

さらに安全にしたい場合は、作成時間、姓、名、携帯電話番号、電子メール、作成時間など、知っているもの、できれば本当に一意のものを追加できます.

データの暗号化については(必要に応じて元に戻すことができるように)、mcrypt を使用できます。mcrypt_encryptmcrypt_decryptを使用できます。使用する暗号と、使用するモードを指定できます。その後、データを元に戻したい場合は、mcrypt にキー、アルゴリズム、モード、および mcrypt_encrypt が提供した無意味な出力を再度与えると、元のデータが得られます。

ハッシュをリバース エンジニアリングするのは非常に難しいため、ハッシュを使用して非常に安全なキーを使用することをお勧めします。sha-256 ハッシュを適切で一意の文字列と共に使用すると (ハッシュ文字列に複数のデータを混在させることをお勧めします)、必要なデータを保護するのに役立ちます。

于 2013-10-06T13:11:00.850 に答える