2011-07-19 3 views
0

次の問題があります。自分のサイトの登録パスワードを作成して、 ユーザーが登録できるようにこのパスワードを知っておく必要があります。また、私はどのような種類の権利をユーザーがこのパスワードで取得するかを決定するブール値がリンクされています。余分なbooleanFieldを使用してパスワードを作成する

私はこれをadminに登録して、パスワードを追加したり削除したりできます。パワーユーザーをtrueまたはfalseにリンクさせることができます。ユーザー登録は、私はこのようなブール値をチェックするときに:

registrationpassword = form.cleaned_data.get('registrationpassword') 
ispoweruser = RegistrationPassword.objects.get(password=registrationpassword).poweruser 

問題は、ハッシュ化されたか、どのような方法で暗号化されていないパスワードです。メソッドにセキュリティを追加するにはどうしたらいいですか?

答えて

0

auth appとuser.is_superuserを使用してください。車輪を改造しないでください。

+0

はい、どうすれば2つの異なる登録パスワードを使用することができますか?そのうちの1つがuser.is_super = TRUEになり、もう1つがuser_is_superuser = FALSEになります。問題は権限の割り当てではなく、特定のグループに2つの異なるパスワードを割り当てる方法です。 – leffe

0

問題はパスワードがハッシュ化されていないか暗号化されていないことです。メソッドにセキュリティを追加するにはどうしたらいいですか?

ほとんどの場合、パスワードはSHA-xまたはMD-5ハッシュアルゴリズムを使用してハッシュされます。そのような場合、開発者はパスワードをハッシュし、ハッシュされたコピーをデータベースまたはコードに格納します。だからどこでも人間が読めるコピーはありません。

このパスワードに対して認証するには、ユーザーが入力したパスワードのハッシュを作成し、保存されたパスワードと比較する必要があります。

あなたはハッシュがWebページを送信する前にJavaScriptで行うことができるWebアプリケーションを作成する場合は、この方法は、ハッシュされたパスワードは、それが困難なハッカーが傍受できるようにすること、ネットワークを通過してから、「アンハッシュ」彼らは

以下の(私たちは、MD5とユーザーパスワードを使用していると仮定すると、「テスト」である)のようになりますJavascriptのハッシュ

  1. 098f6bcd4621d373cade4e832627b4f6である「テスト」のMD 5を生成し、クライアント側でDB
  2. に保管してください(javascript)はセッションIDを取得します
  3. ユーザーを言わせ
  4. は結果が先頭に追加セッションIDで再び098f6bcd4621d373cade4e832627b4f6
  5. MD5それである「テスト」md5のそれ最初のように入るので、新しいMD5 f93437292fca0cf9b71bf1f3fe6c4679
  6. を送っている(のセッションここID 9985ですが、言わせて)サーバにハッシュする
  7. サーバは、セッションメソッドを使用してセッションIDを取得できます。たとえば、Javaではsession.getId()でIDを取得できます。
  8. は、ユーザからNEWPWDとして( '9985')CONCAT(PWD)以下

    選択MD5と類似しているクエリを実行する場合、ユーザとのuname = 'XYZ'

  9. 一致 "NEWPWD"送信された値

誰かがHTTP応答でデータを投稿しようとすると、サーバーは毎回新しいセッションIDを作成するため、認証は完了しません。 したがって、ユーザーがログアウトし、新しいハッシュされたパスワードでログバックする場合は、電線を通じて送信されます。

また、私はどのような権利の決定するであろう、それにリンクされているブール値を希望のご参考

Python's safest method to store and retrieve passwords from a database

What is the format in which Django passwords are stored in the database?

http://en.wikipedia.org/wiki/Salt_(cryptography)

+0

javascriptのハッシングは非常に安全です。 – DrTyrsa

+0

あなたが正しいです、私たちは、どのアルゴリズムがハッシュに使用されているかを公開するかもしれません。しかし、私はいくつかの場所では、ウェブサイトが塩として追加されたセッションIDでJavaScriptのハッシュを使用して見てきました。 saltはセッションIDそのものなので、そのようなWebサイトで再生攻撃を行うことさえできません。 – Sap

+0

したがって、「ハッカー」がトラフィックを盗聴すると、彼はハッシュ、塩、覚醒を知るでしょう。とってもとっても素敵。私も[この件について](http://en.wikipedia.org/wiki/HTTP_Secure)について聞いたことがありますが、JSソリューションは私にとってはるかに信頼できるようです。 – DrTyrsa

1

については、以下のリンクを参照してください。ユーザーはこのパスワードを取得します

しないでください。グループを使用する。それが彼らのためのものです。

この「パワーユーザー」がスーパーユーザーでない場合は、特別な権限を持つグループを定義し、パワーユーザーをこのグループに入れる必要があります。

各ビュー機能は、ユーザーがビュー機能を使用するために適切なグループにいることを確認する必要があります。

今やispoweruserは、グループ名に対して簡単なテストです。余分なブール値はありません。

+0

価値のある読者:Django docs on [groups](https://www.channel.com/discussion- //docs.djangoproject.com/ja/dev/topics/auth/#groups)と[カスタムアクセス許可](https://docs.djangoproject.com/en/dev/topics/auth/#custom-permissions)を参照してください。 –

関連する問題