0

I am currently hashing all of my users passwords and putting them into my database.

Now some of my users wants me to get their password or want me to do some admin stuff while logged in as them.

My question is can i unhash the password stored in the database and retrive it? and if so how ?

is there a function in cake that allows this feature?

4

3 に答える 3

3

彼らがパスワードを忘れたという事実は、あなたが彼らに任意のパスワードを与えることができることを意味します。したがって、私のアドバイスは、発音可能な単語といくつかの数字で構成される新しいパスワードを生成し、それをユーザーに送信することです。とにかく、後でパスワードを変更できます。

こうすれば、そもそもパスワード ハッシュが元に戻されることを意図していないため、セキュリティについて妥協する必要がありません。

ユーザーの偽装は管理機能です。適切な役割を持っている場合は、別のユーザーになり、別のユーザーとして物事を行うことができます。

于 2013-10-03T14:44:31.393 に答える
2

何かを「ハッシュ解除」することはできません。そのため、ハッシュは「安全」です (ここでは議論しません)。

では、なぜユーザーは自分のパスワードを取り戻したいのでしょうか? 彼らはそれらを忘れてログインできないからですか?その場合、何かをハッシュ解除する以外に、「パスワードを忘れたので修正します」という別の方法があります。最も一般的なのは、電子メールを要求する「パスワードを忘れた」リンクを配置し、パスワードをリセットするためのリンクを含む電子メールを送信し、ユーザーがリンクをクリックすると、リセットによりランダムなパスワードが作成され (そしてハッシュされ)、古いパスワードが置き換えられます。新しいランダム パスをユーザーに送信します。ユーザーはランダム パスを使用し、アプリケーションにログインしたときに新しいランダム パスに変更できます。

あなたが管理者として他の誰かの「ふりをする」ことをしたい場合は、パスワードを知らなくても、他の人の「ふりをする」ことができる機能 (管理者としてのあなただけがアクセスできる) を追加できます。これに対する最善の解決策が何であるかは、あなたが何をしたいのかに依存し、それはまったく別の質問として投稿されるべきだと思います。

しかし、これは非常に危険な行為ですので、よく考えてください。誰かがこの機能を実行できるとしたら? 他に解決策はありませんか?これを行うと、攻撃者とアプリケーション内のすべてのアカウントへの完全なアクセスとの間の唯一のものは、管理者パスワードになります。パスワードハッシュをパスワード暗号化 (元に戻してプレーンテキストを取得できる) に変更すると、一部の「悪者」もパスワードを解読するのがはるかに簡単になります。クライアントが最終的な言葉を持っていることは知っていますが、彼に説明してください、彼が望むことをするのは非常に安全ではありません.

于 2013-10-03T14:44:26.923 に答える