2011-01-18 9 views
3

フィードバックをお寄せください。私はユーザーにランダムに生成されたパスワードが与えられるdjangoアプリケーションを構築しています。これはどの程度安全ですか?

現在、パスワードはdjango authのmake_random_password()関数を使用して生成されています。

しかし、早期のフィードバックは、電子メールが覚えがたすぎることです(ユーザーが変更することはできますが)。

これは閉鎖された(招待された)アプリですが、インターネット上に存在します。合計約600人のユーザーがいます。私は解決策を持っていたと思っていますが、私はSOユーザーが実行したかったのですが、フィードバックの問題を解決しました。

私のsettings.pyファイルには、他の約40の動詞(これは大文字である)。

私は各リストから1つをランダムに選択して一緒に結合し、最後にいくつかのランダムな文字を追加しました。

すべてのパスワードは、少なくとも9文字の長となり、保存されたとき、Djangoのset_password()関数を使用してハッシュされ

私が見る一番の問題は、誰かが、彼らはその後、アクセス権を持っているでしょうSFTPサーバーへのアクセスを獲得した場合私のコードには、したがって、pwordをクラックするためのテンプレートに。

でも、dbアクセスなどもあるので、本当に心配ですか?

+0

私は、ランダムに生成されたpwordが行く方法であると言う権利を予約しています - 常に "セキュリティ"トランプカードを持っています。 – picus

+0

電子メールの "パスワードを変更するにはここをクリック"リンクを作成してください。 – Lacrymology

+0

それは本当ですが、これは「健康と安全」の問題が修正されたと言われるなら何でもできるという古い言葉のようです。閉じたアプリの場合、そのようなパスワードシステムは大丈夫だと言いたい。誰かがFTPサーバーにアクセスするのを心配することはありません - それはかなりのWebアプリケーションの場合です。もし誰かがそれをしたら、彼らはDBパスワードを持っていて何かをすることができます! – Matt

答えて

8

攻撃者は常にパスワード生成方式にアクセスできると想定する必要があります。セキュリティが不明であるという前提でセキュリティをベースにしています。あいまいさは素晴らしいセキュリティボーナスを与えることができますが、決してそれに頼るべきではありません。

攻撃者は両方のリストの内容を知っている必要があります。例えば、彼は単純に約40回登録するだけで、それらの重要な部分を知ることができます。

あなたの車名に動詞を組み合わせると、エントロピーの約9.6(= log2(20)+ log2(40))ビットがあります。約2つのランダムな文字に対応します。それは非常に低いです。

+0

非常に良い点。ただし、サイトが大量に管理されているため、登録シナリオは実行されません。パスワードが生成される前に、ユーザーは自分の電子メールを事前に登録し、そのIDをオフラインで確認する必要があります。 – picus

+0

エントロピーを計算する方法を示すupvote – Marcin

3

ユーザーが初めてログインするときに強制的にパスワードを変更できますか?または、すべてのユーザーがすでにログインしている場合は、次のログインにパスワードを変更しますか?こうすることで、より安全なパスワードを保持することができ、ユーザーは覚えているものに変更する必要があるため、ランダムに生成されたパスワードが覚えにくいことに不平を言うことはできません。

3

どのように彼らはまだ別のパスワードを覚えておく必要はありませんので、OpenIDのシステムを使用してについて。いくつかのDjangoの統合があります。欠点は、あなたがあなたの招待状を送信する前に認証DBにそれらを追加するためにOpenIDを知る必要があるということです...

1

あなたがフラグを持っている限り、後で署名する際にパスワードをチェックする必要があるので、パスワードを生成するために使用されるランダムなパスワード生成パターン。あなたはそれをやっていますか?はいの場合は、塩析パターンを追加して安全にし、最終的に生成される塩全体のハッシュをより安全にします。これを試してみてください。

関連する問題