1

CMSシステムで作業していて、ユーザーのデータを保護する機能を追加したいと思います。もちろん、パスワードはハッシュ化されており、ブルートフォーシングを使用してのみデコードできます。しかし、今では残りのデータ、たとえばメールアドレスについてです。メールを送信するたびにデコードできるユーザー登録時にメールアドレスをエンコードする機能が欲しいのですが。ハッシュの問題は、簡単に元に戻すことができないことです(私は思います)。少なくともmd5とsh1および同様のアルゴリズムでは、これは不可能なので、これは私が望んでいることではありません。

エンおよびデコーディングプロセスでsaltを使用できる機能が欲しいです。これは、このプロセスの「シード」または「ソルト」として使用されるランダムな文字列がWebアプリケーションのどこかに格納されていることを意味します。したがって、そのランダムな文字列が異なると結果が異なり、一度デコードするのが難しくなります。たとえば、ハッカーがデータベースに侵入し、データを盗みました。

PHPでとという関数を見ましたがbase64_encode()base64_decode()これらの関数はデータを非常に簡単にエンコードおよびデコードできます。これらの関数の問題は、「salt」パラメーターがないことであり、保護としてはあまり良いとは思いません。エンおよびデコード機能とソルトパラメーターを使用して、より保護された類似の機能を実行する関数はありますか?

よろしくお願いします、TimVisée

4

1 に答える 1

3

エンコード、ハッシュ、暗号化の違いを説明しましょう。

  • エンコーディングはデータを表現するための手段にすぎないため、セキュリティには役立ちません。base64は、8ビットのデータ表現を6ビットにエンコードするため、つまり電子メール本文で転送するために使用されます。あなたには役に立たない。
  • ハッシュは、通常、次のプロパティを使用してデータを一方向に変換するものです。
    • 多くの(実際には無限の)異なるデータ文字列は同じハッシュを持っています。任意の長さの文字列をハッシュできますが、生成されるハッシュの長さは常に制限されているため、すべての入力文字列が一意のハッシュを持つことができるわけではありません。
    • ハッシュは高速ですが、指定されたハッシュを使用して元のデータを推測することは、考えられるすべての組み合わせを試すよりも簡単に計算することはできません。
    • 暗号化はあなたが探しているものです。暗号化されたデータは、適切なキーでのみ読み取ることができます。

ただし、データベース内のデータを暗号化することに大きな意味はありません。誰かがあなたのPHPソースコードとデータベースを見た場合、その人は簡単にキーを読み取ってデータを復号化できます。誰かが生のデータベースを盗み、それでもソースコードにアクセスできない場合にのみ役立ちますが、それは非常にまれであり、Webプログラマーは通常それを行いません。

于 2013-03-03T14:31:51.283 に答える