2009-04-03 5 views
1

認証されたユーザーに新しいパスワードを表示するページを作成するという不幸な要求を受けました。私は一般的に悪い考えとしてこの要件に不成功に終わったが、陪審員はまだ出ていると思うので、まだ試していない新しいパスワードを表示するという議論があるかもしれない。何か提案はありますか?ウェブユーザーにパスワードを返す

第2に、テキストではなく画像としてユーザーにパスワードを表示するほうがよいでしょう。私はテキストが "掻き取られている"ことを心配しています。私はイメージではもっと難しいと思っています。画像がユーザーのブラウザによってキャッシュされないようにするにはどうすればよいですか?

ありがとうございました。

答えて

3

ビルドの内容と要件はわかりませんが、大雑把な一般的なルールとして、これは重大なセキュリティ上の懸念ではありません。攻撃ベクトルを見てみましょう:

  1. マンHTTPテキストトラフィックに中間者攻撃で - イメージ、OCR(CAPTCHAスタイル)に対して難読化され、特に1この攻撃を防ぐだけでなく、porneLが述べたように、単純にHTTPSを使用します。
  2. リモートデスクトップアプリケーションによるスクリーンスクレイピング - HTTPS保護は役立ちません。また、画面上の混乱が人間によって読み取られなければなりません(人間の攻撃者は、「man in theイメージをアーカイブしてから手動で上書きするようにリスナーに指示することにより、「中」になります)。人間がスクリーンスクレーパーの背後にいる場合、あなたは保護されません。
  3. あなたの肩の盗聴に - 攻撃者が単純にユーザーの背後に立っている場合、再びあなたは保護されません。

パスワードが自動生成されている場合は、ユーザーに表示する必要があります。回避策はありません。サイトが脅威を緩和しようとする1つの方法は、誰も見ていないときに自分の時間に電子メールを読むことができるという前提で、電子メールでパスワードを送信することです。残念ながら電子メールでは、転送を保護するために暗号化の恩恵を受けることさえできません。

私の意見では、ユーザーにパスワードを入力させ(通常はパスワードの難読化フィールドで)、パスワードのハッシュを保存するだけで、実際のパスワードを保存する必要はありません。ユーザーに表示されないようにします。ユーザーに表示する必要がある場合(おそらくそれを生成しているため)、HTTPSを超えて表示するだけです。セキュリティ上のメリットを与えることなく実装が複雑になります。

+0

注意事項ユーザがパスワードを入力することで、HTTPSなしで安全になることはありません。それをサーバーに送り返す必要があります。ハッシュクライアント側を計算しても状況は改善されません。クライアントで新しいパスワードをハッシュし、サーバーでckeckをハッシュすると、それが起こります。しかし、ログオン中に平文パスワード –

+0

を送信する必要があります。そしてもちろん、あなたのログインが安全でないならば、新しいパスワードを作るときのすべての魔法は何の助けにもなりません。 –

+0

「ポルノ」って何?興味をそそられる。 ;) –

3

お試しいただきましたか?

  • パスワードを保存していないため、パスワードを表示できません。
4

イメージはあまり保護されません。

HTTPSを使用している場合、パスワードはいずれの方法でも安全です。 HTTPを使用している場合、パスワードはフォームからクリアテキストで送信されます(何らかの確認のために表示していると仮定します)。また、秒後に表示される方法は問題になりません。

重要なことは、パスワードを表示するページが非キャッシュ可能であることを確認することです。

Cache-control: no-cache, no-store, must-revalidate 
1

実際にこのような悪い考えがあるかどうかはわかりません。どちらの方法でも、新しいパスワードをユーザーに送信する必要があります。暗号化されていない電子メールとして送信することは、ウェブメールを使用しているときにキャプチャされるか、beeingキャッシュになるかという同じ問題を持ちます。

私は画像を使用することをお勧めします、何かのようなcaptchaかもしれません。しかしこれは、人間の攻撃に対してではなく、自動化された攻撃に対して少しだけ保護します。

物を安全にする唯一の方法は、暗号化を使用してHTTPSを提案することです。その後、ウェブサイトを使って表示すると、そのような電子メールやソリューションに頼るよりもさらに安全になる可能性があります。

ユーザーが新しいパスワードを入力しても、同じ問題が発生します。これをサーバーに戻す必要があります。

0

HTTPSを使用してトラフィックを暗号化し、一時パスワードをハッシュするだけで、実際のパスワードはデータベースに格納されません。もちろん、物理的な「ハッカー」(背後にいる人など)が一時的なパスワードを盗むのを防ぐことはできませんが、可能であれば、ユーザーが一時的なパスワードでログインしたときにパスワードを変更するように要求することができます。一時的なパスワードによるリスクが軽減されます。

関連する問題