3

Google アプリ エンジンを使用して Web サイトを開発していますが、送信を処理する適切な方法を知りたいです。

クライアント側のパスワードをソルトでハッシュし、サーバー側で他のソルトで再度ハッシュするようなことを考えていました。

これが少なくともまともなセキュリティであるかどうか、そしてそれを行うPythonライブラリがすでに存在するかどうか、またはそれ以上のことを知りたいです。

4

3 に答える 3

6

標準的な方法は、接続に SSL 暗号化 (https など) を使用し、サーバー側でソルトを使用してハッシュすることです。後でユーザーがログインしたときに、パスワードを確認する必要があり、ブラウザーからサーバーにパスワードのハッシュを送信することは、パスワード自体を送信することと同じくらい安全ではありません。いずれかを傍受する攻撃者は、そのユーザーとしてログインできます。

passlibさまざまな形式のパスワードハッシュとソルティングを処理できる、という名前の python パッケージがあります。

from passlib.hash import sha256_crypt
hashed = sha256_crypt.encrypt(password)

一般に、保存されたパスワード ハッシュに選択したアルゴリズムを含めることをお勧めします。RFC 2307 パスワード (LDAP で使用) は{SCHEME}プレフィックスを使用し、他のハッシュ スキームは unix$digit$プレフィックスを使用します。数字は数字です。sha256上記のコード スニペットのスキームでは$5$、プレフィックスとして使用されます。

こうすることで、後でパスワードを検証するための正しいハッシュ アルゴリズムを選択することで、古いスキームを引き続きサポートしながら、後でパスワード スキームをアップグレードできます。

ほとんどのpasslibハッシュ スキームは、各スキームの詳細なドキュメント ページに記載されている、標準のプレフィックスを持つハッシュを既に返します。この.identify()関数を使用して、後で入力したパスワードに対してパスワード ハッシュを検証する必要がある場合に、使用されたハッシュ アルゴリズムを特定できます。

于 2012-09-16T08:13:50.020 に答える
0
  1. TLS (HTTPS) を使用します。完璧ではありませんが、何もないよりはましです (そして、ダイジェスト認証よりもはるかに優れています)
  2. パスワードを保存したくない場合は、Google にすべて任せることができます: https://developers.google.com/appengine/articles/auth
  3. パスワードの保存について心配したい場合は、Martijn Pieters の説明に従って passlib を使用してください。
于 2013-09-26T18:41:54.473 に答える
-2

ダイジェスト認証を探しています。Digest Auth は安全です。つまり、パスワードはクリア テキストで転送されません。ただし、認証後の通信は暗号化されません。

ここで完全な例を参照してください: http://code.activestate.com/recipes/302378-digest-authentication/

于 2012-09-16T07:57:29.667 に答える