2

現在、Django を使用して Python でツールを開発しています。このツールでは、既存のユーザー データベースをインポートする必要があります。明らかに、これらの既存ユーザーのパスワードは、Django が使用するデフォルトのパスワード暗号化と同じ暗号化を使用していません。

パスワード メソッドの暗号化を無効にして、パスワードを変更しないようにしたいと考えています。ドキュメントで既存のメソッドをオーバーライドする方法が見つかりません。ユーザーに関する情報を追加する方法を見つけただけです(名前や姓など、ユーザーに関する情報を削除する方法もわかりません。誰かが知っている場合は教えてください私にお願いします)。

ご協力ありがとうございました。

4

2 に答える 2

3

Django では、ユーザーが認証される方法は User モデル自体では行われません。Django は他のモジュールを使用してそれを行います。あなたの場合、パスワードをチェックするためのカスタム モジュールを作成し、settings.py( docs ) に追加できます。

Django の優れた点の 1 つは、これらのハッシュを複数提供してその認証を実行できることです。現在のハッシュ方法が、Django が使用するいくつかの方法ほど安全ではないとしましょう。次に、カスタム ハッシャーを の下部に追加するとPASSWORD_HASHERS、次のことが起こります。ログインしようとしているユーザーのパスワードがカスタム メソッドを使用して保存されている場合、Django は最初のハッシャーを試行し、失敗します。次に、残りのハッシュを試行しますが、カスタム ハッシュを除いてすべて失敗します。ただし、ユーザーが正常に認証され、成功したハッシャーが最初のハッシャーではないため、Django は最初に定義されたハッシャーを使用してパスワードを自動的に再ハッシュします。このようにして、ユーザーがログインし続けると、パスワードのより安全なハッシュ アルゴリズムに適切にアップグレードできます。

また、現在のデータベースを移行していて、users テーブルが Django ユーザー モデルと一致しない場合は、Django 1.5 以降ではUser、Django の代わりにカスタム モデルを定義できることに注意してください。

于 2013-03-31T18:01:18.000 に答える
0

古いパスワード ハッシュの保持に関する決定を再考してください。

いくつかの非常に近代的で強力なスキーム (pbkdf2、bcrypt.shaXXX_crypt など) を既に使用している場合を除きます。

互換性を維持し、古いがらくたをサポートしたくなるのはわかっていますが、これらの古い (salted または unsalted、ブルート フォースにはあまり関係ありません) sha1 ハッシュは、現在 > 1*10^9 の割合で壊れる可能性があります。 1秒あたりの推測。

また、古いパスワードの最小長要件は、同じ理由で再検討が必要になる場合があります。

デフォルトの django パスワード ハッシュ スキームは非常に安全なものですが、実際に使用する必要があります。

于 2013-04-11T23:28:59.040 に答える