2009-07-23 4 views
0

今、私は混乱しています。私はライブラリ上のSOユーザから、認証のためにcodeigniterを使うよう助言を得ています。私はdx_authとsimpleloginsecureを調べました(私は、安全なハッシングと小さなフットプリントのために後者を使用すると思います)。PHPセキュアログイン - クライアント側のオプション?

しかし、どのようなクライアント側でパスワードをハッシュでしょうか?私は図書館の資料でこれについて何の言及も見ていない。これらのライブラリの安全性にかかわらず、クライアント側の暗号化(js)が必要でないため、パスワードは決してプレーンテキストでは投稿されません。または私は何かが欠けていると、これらのライブラリは何とかこれをカバーしていません...

おかげ

アップデート:下のカップルの答えはSSLを示唆しています。しかし、私はこれらのphp(codeigniter plugin)ライブラリがSSLの代わりに使われているという印象を受けました(私はここで完全に間違っていました)。私が間違っている場合は、SSLなしでこれを達成する安全な方法がありますか? (以前は、投稿する前にパスワードを暗号化するためにjavascriptのmd5ハッシュ関数を使用していましたが、もっと安全なものが望まれていました)。

更新2私はSSLを使用する必要がありますのでコンセンサスのようです。これが当てはまる場合は、あらゆる種類のハッシュを実行するすべての派手なPHP認証ライブラリのポイントは何ですか? SSLがクライアントからサーバーへの暗号化を処理する場合、これらのライブラリ(dx_authなど..多分役割機能を追加する以外に)を使用するポイントは何ですか?サーバー/データベース上のデータの安全な保管を保証するだけですか? (私は、私が取り組んでいるプロジェクトのデータの感度のレベルをstackoverflowのものと比較します。クレジットカードがないか、過度に敏感なもの、ユーザー名、パスワードなど)

答えて

1

クライアント側のデータを暗号化するには、あなたはsslする必要があります。

基本的にSSLはなど、変数を投稿され、ブラウザに各セッションの開始時に暗号化キーを送信し、その後で暗号化し、サーバによって他の終わりに再び復号化されます。それはあなたのハッシュアルゴリズムを公開するだろうと

JSの暗号化は、実際には、お使いのシステムは、安全性の低い作ることができます。

UPDATE:

パスワードをハッシュすると、すべてのクライアントとサーバーの間で詮索されることから、それを保護するのではなく、誰かがあなたのサイトをハッキング場合ことを意味し、またはとにかくにおける利益あなたのデータベースへのアクセスをしません。のパスワードはプレーンテキストでは表示できません。多くの人が複数のサイトで同じパスワードを使用するため、これは特に重要です。

1

のCodeIgniterに関する単一のドットを知らなくても、私はあなたのオプションがあることだと思う:

  1. にはJavaScriptを有効にでジャンプし、それが提出される前、パスワードをハッシュ持っています。これも可能ですか?

  2. は、SSL接続を使用してください。

また、送信しているものを考慮する必要があります。それが生命を危険にさらす機密情報でない限り、あなた自身に尋ねてください - これは送信のために実際にハッシュされる必要がありますか?

そして、誰かが自分のPCにキーロガーやその他のマルウェアを持っている場合は、最後に、それはあなたのクライアント側はとにかく無意味ハッシングレンダリングされます。

ハッシングの機密情報は、その情報が格納されているデータベースが侵害された場合、大きな被害はありません。攻撃者はすぐに役立つ情報を持っていないためです。

0

クライアント側で暗号化する利点はありません。 SSLを使用していない場合、データは何に関係なく傍受される可能性があります。したがって、たとえあなたがmd5と言ってパスワードをハッシュしたとしても、md5ハッシュはプレーンテキストで送られてから傍受され、サードパーティのログインページにポストバックすることができます。確かに彼らは生のパスワードを知らないかもしれませんが、彼らはまだアクセスすることができます。セキュリティに懸念がある場合は、自己署名証明書を作成するか、信頼できる証明書を取得するためにRapidSSLリセラーに10ドルを支払う。

+0

erm ...ハッシュを使用すると、許可しない限り誰かがあなたのサイトにアクセスすることはできませんが、これはお勧めできません。 –

+0

私はそれを認識しています。問題があるjavascriptを使用してクライアント側で暗号化している場合、アプリケーションはそれを許可する必要があります – Mark

0

ブラウザとサーバーがすべてのパスワード暗号化を処理します。 。これを行うには、あなたが安全な接続を使用していることを確認してください(プロトコルは、その後httpsなり、例えばhttps://www.example.comあなたはセキュアな接続を受け入れるようにセットアップするサーバーが必要になります - いくつかのヒントのためgoogleを試し

1

を単にパスワードをハッシュ。あなたのサイトへのすべてのリクエストがリプレイ攻撃に対して脆弱であるため、クライアント側では無意味です。トラフィックを見ることができる攻撃者は、リクエストにユーザー名とハッシュパスワードが表示されます。これは簡単に再生することができ、

平文で値を送信すると自動的に暗号化され、snにすることはできないため、SSLを有効にすることをお勧めしますiffed。また、ユーザーは、データが有効なソースから送られてきたものと信じることができます。

しかし、選択肢があります。 SSLを必要としない場合はchallenge-response認証スキームを使用することもできますが、これにはいくつかの欠点もあります。それは本当にあなたがサイトで何をしているかによって異なります。

関連する問題