2011-02-23 9 views
6

CouchDBでの認証、特にCookie認証に関する多くのことを読んだことがあります。 私はまだいくつかのテストを作ってるんだし、すべてが、このコマンドを使用して、例えば、うまく機能しているようだ:CouchDB認証

カール-VX POSTの$ HOST/_SESSION -H 'アプリケーション/ x-www-form-urlencodedでは、' '-d名前= foo &パスワード= bar '

私は使用できるCookieを取得します。 しかし、私の要点は、Web上でサンプルの種類が分かるといつでも、ユーザー名とパスワードは常にプレーンテキストで送られるということです。

私は本当にセキュリティが新しくなっていますが、最初にクレデンシャルをクリアに送信する必要がある場合は、Cookie認証方式の利点は何ですか?

少なくともパスワードハッシュを送信する方法はありますか?そのIDKようなもので :

カール-VX POSTの$ HOST/_SESSIONの-H 'アプリケーション/ x-www-form-urlencodedで' '名前= FOO & hashed_pa​​ssword = hashed_bar'

を-d

乾杯

アルノー

答えて

11

あなたはすべての攻撃者が知っている必要があるよりも、ハッシュ化されたパスワードを送信する場合、それは平文でパスワードを送信する問題を解決しないように、あなたのハッシュされたパスワードである - 今、あなたはヘクタールだろうあなたのハッシュを平文で送るという問題があります。

この問題を解決したとしても、クリアテキストでCookieを送信しても、セッションハイジャックに脆弱である可能性があります。

は(そこHTTPは、独自の問題もなくDigest認証ではなく、まただ - 。しかし、CouchDBのはそれを私はとにかく最後にチェックの時間をサポートしていませんでした)

あなたは何をすべき常に認証されたCouchDBのためにHTTPSを使用することですおそらく127.0.0.0のネットワークを除いて、関係するすべてのネットワークにアクセスできます。バージョン1.1のよう

(そして、はい、ほとんどすべての書籍でウェブ上の例のは、私の意見で起こるのを待っている災害であるHTTP上の基本やクッキー認証を使用して表示されます。)

+0

私はHTTPSを使用し、セキュリティは大きな問題ではない小さなアプリケーション用です。サーバー管理者の資格情報が使用されないように、データベース管理者とデータベースユーザー(読者)を管理していると思います? – Arnaud

2

、CouchDBは、HTTPS経由のAPIアクセスをサポートしています。 HTTPSプロキシを使用する代わりに、HTTPSを直接使用して、ワイヤを介して送信されるパスワードを保護することができます。 1.1の場合はFeature Guideを参照してください。

2

Httpsを使用するのが正解です。

サーバー側でハッシュを計算する重要性について説明します。 ハッシュは、入力をサーバーに格納されているキー値に変換する一方向関数です。誰かがサーバーをハックし、ハッシュされた入力(キー値)を取得した場合、入力値を推測してあなたを偽装することはできません。

クライアント側でキー値を計算し、サーバー上で一方向の変換が実行されない場合は、パスワードをクリアテキストで格納するのと同じです。サーバーに格納されているキー値のコピーを取得できた人は、キー値を送信するだけで簡単にあなたを偽装することができます。

したがって、パスワードデータベースを保護するには、提出されたパスワードに塩/ランダムシードを持つ暗号的に安全な一方向関数(すなわちsha256)を適用する必要があります。

送信されたパスワードをハッシュで難読化すると、それをサーバー側でハッシュするだけでなく、送信されたハッシュ値が常に同じであれば助けになりません。しかし、SSL接続を介して送信されたスパイデータは自明ではありません。

ただし、クライアント側でパスワードをハッシュすると大きな利点があります。クライアント側のハッシングがパスワードをランダム化したため、共通のパスワード辞書を使用してパスワードを推測しようとすると、サーバーに対する総当たり攻撃は絶望的になります。

ハッシュされたパスワード辞書の使用を防ぐために、ハッシュに塩を追加することがあります。ユーザーがユーザーIDを入力したら、ユーザー固有のsalt値をサーバーに問い合わせてください。次に、返されたsaltまたはハッシュ・シード値を使用して、クライアント側でハッシュ・パスワードを生成します。

再試行の間隔を長くすることで、サーバー側でブルートフォースパスワードの推測が妨げられる可能性があります。しかし、これは一般的に1つの特定の接続で機能します。攻撃者は、2回の試行のたびに再接続することがあります。この種の攻撃を認識するためには、IPアドレスを把握する必要があります。