0

ユーザーがユーザー名とパスワードで自分自身を認証する必要があるWebサイトがあります。SSLを使用したいのですが、SSL証明書を持っていません。しかし、私は大丈夫だと思う何か他のことをします。

私のサイトは主にAJAXベースであり、 JavaScriptが必要です。そうでない場合、何も機能しません。

ユーザーがログインしようとすると、AJAXを使用してデータベースにクエリを実行し、そのユーザー名のソルトを探します。見つからない場合は、ランダムなソルトが返されます(そのユーザー名のユーザーがいるかどうかをユーザーが知らないようにするため) 。次に、JavaScript用のMD5関数を使用して、パスワードを4K回ハッシュおよびソルトし(LinuxがパスワードハッシュにMD5を使用する場合のように)、そのハッシュをプレーンテキストでサーバーに渡します。次に、このハッシュはさらに数回ハッシュされ、データベースの内容を確認するために提示されます。

これは安全ですか?そうでない場合、ほとんどが内部WebサイトのSSL証明書の現金をフォークせずに、どうすればそれを保護できますか?

4

4 に答える 4

15

いいえ、安全ではありません。中間者は、ハッシュされた値をスヌープして後で提示し、誤って自分自身を認証する可能性があります。

誰かを認証するには、その人が秘密を知っていることを証明する必要があります。暗号化されていないチャネルを通過するものはすべて秘密ではありません。

SSLを使用します。Firefoxで受け入れられる証明書を無料で入手でき、IEユーザーに信頼できるルートに新しいCAを追加するための指示を与えることができます。箱から出してすぐにすべてのブラウザで受け入れられる証明書は安価で、年間30ドルだと思います。

于 2009-06-17T18:29:03.560 に答える
3

最適なオプションは次のとおりです。

  • StartCom(無料)によって署名された証明書を使用します。FirefoxとSafariの最近のバージョンでネイティブにサポートされています。IEを使用しているユーザは、CAを信頼されたルートのリストに追加できます。
  • 自己署名証明書を使用してユーザーに配布し、ブラウザーに追加します。

他の人が言うように、あなたのソリューションは安全ではありません。パスワードをクリアテキストでサーバーに送信するよりも改善はありません。主な理由:

  • クライアントからクリアテキストで送信され、認証に直接使用されるものはすべて、中間者攻撃や盗聴攻撃の影響を受けやすくなります。提案された解決策では、ハッシュされたパスワードを知っている場合はログインできます。パスワードをハッシュとして送信しても違いはありません。
  • 認証後もデータはプレーンテキストで送信されるため、簡単に盗聴できます。
  • MD5は穴だらけです
于 2009-06-17T18:34:30.493 に答える
2

独自のSSL証明書を無料で作成できます。一般ユーザーからは信頼されませんが、信頼することはできます。

JavaScriptと暗号化されていないトランスポート層を使用することで、サーバーに送信するハッシュを誰かが取得する可能性が広がります。もちろん、パスワード/ユーザー名をハッシュする方法の正確な青写真を提供することもできます。

それは本当にそのアプリケーションにとってセキュリティがどれほど重要であるかに依存します。非常に重要な場合は、Ajaxを削除し、SSL証明書を取得してHTTPSレイヤーを使用します。

于 2009-06-17T18:33:08.390 に答える
1

ソリューションはリプレイアタックに対してオープンです。ブラウザとWebサーバー間で直接ダイジェスト認証(RFC 2617)を試してください。

于 2009-06-17T19:03:52.023 に答える