0

私は ac# app を持っており、php と mysql を使用してパスワードを保存する基本的なログインフォームを作成しようとしています。

パスワードを保存するためにSHA512 +ランダムソルトを使用しているため、現在パスワードに対してこれを行っています。

ハッシュ (パスワード + ランダムな塩) + ランダムな塩;

したがって、ソルトはハッシュに追加され、サーバーに送信されて保存されます。

今私の問題は、誰かがログインしようとしたときの比較です。ユーザーはソルトを知らず、プレーンテキストのパスワードをサーバーに送信したくないので、少し行き詰まっています。

パスワードを暗号化してサーバーに送信し、サーバーにユーザーにソルトを送信させる必要がありますか、それともこれを実装するより良い方法はありますか?

アカウントのパスワードを作成する人が適度に安全であることを確認したいだけです.

前もって感謝します

4

2 に答える 2

1

一般に、ハッシュされたパスワードとランダムなソルト値をデータベースに保存する必要があります。

ユーザーが認証されると、そのユーザーのユーザー名とパスワードがサーバーに送信されます (できれば、SSL で保護された接続を介して)。そこから、ユーザー名を使用してソルト値とハッシュ化されたパスワードをデータベースから取得し、比較を行います。

要するに、平文のパスワードを保存したり、セキュリティで保護されていない接続を介して送信したりしないでください。

詳細については、パスワードハッシュ、ソルト、およびハッシュ値の保存を参照してください。

于 2011-11-02T01:11:31.010 に答える
0

それはほとんど不可能です。Derekが言ったように、正しいことはSSL証明書を取得し、それを介してプレーンテキストのパスワードを送信することです.

ソルティングは、盗まれたパスワード データベースが全員のパスワードを漏らさないように保護することです。ただし、ハッシュ ステップがクライアントで実行される場合、データベース内の値は、ネットワーク経由で送信される正確な文字列です。

本当に SSL を使用できない場合は、http://en.wikipedia.org/wiki/Challenge-response_authentication#Cryptographic_techniquesで、パスワード (またはほぼ同じハッシュ) の送信を回避する方法について説明しています。

于 2011-11-02T01:22:54.390 に答える