Google アプリ エンジンを使用して Web サイトを開発していますが、送信を処理する適切な方法を知りたいです。
クライアント側のパスワードをソルトでハッシュし、サーバー側で他のソルトで再度ハッシュするようなことを考えていました。
これが少なくともまともなセキュリティであるかどうか、そしてそれを行うPythonライブラリがすでに存在するかどうか、またはそれ以上のことを知りたいです。
Google アプリ エンジンを使用して Web サイトを開発していますが、送信を処理する適切な方法を知りたいです。
クライアント側のパスワードをソルトでハッシュし、サーバー側で他のソルトで再度ハッシュするようなことを考えていました。
これが少なくともまともなセキュリティであるかどうか、そしてそれを行うPythonライブラリがすでに存在するかどうか、またはそれ以上のことを知りたいです。
標準的な方法は、接続に 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()
関数を使用して、後で入力したパスワードに対してパスワード ハッシュを検証する必要がある場合に、使用されたハッシュ アルゴリズムを特定できます。
ダイジェスト認証を探しています。Digest Auth は安全です。つまり、パスワードはクリア テキストで転送されません。ただし、認証後の通信は暗号化されません。
ここで完全な例を参照してください: http://code.activestate.com/recipes/302378-digest-authentication/