2017-11-07 10 views
0

私は怒鳴るように拡張するユーザーを作成しています:?はジャンゴで私のデザインユーザーで危険性がある

is_staff = False 
is_superuser = False 

だから、私が作成したとき:

class User(AbstractUser): 
    username = models.CharField(max_length=16) 
    password = models.CharField(max_length=40) # sha1加密 
    real_name = models.CharField(max_length=12, null=True, blank=True) 
    phone = models.CharField(max_length=11) # 手机号码 
    email = models.EmailField(blank=True, null=True) 
    qq = models.CharField(max_length=10, null=True, blank=True) 
    address = models.CharField(max_length=64, blank=True, null=True) # 地址 

    nickname = models.CharField(max_length=16, blank=True, null=True) 


    is_staff = models.BooleanField(default=False) 
    is_superuser = models.BooleanField(default=False) 

次の2つのフィールドがここにあります見ますAdminUser、リスクがある場合は? ハッカーが使うかもしれないので:

AdminUser(xxxxx, is_staff=True, is_superuser=True, xxx) 

スーパーユーザを作成します。または、私のユーザーモデルが間違っているかどうか?


EDIT

AbstractUserdjango.contrib.auth.models.AbstractUserあります。

+2

です。 –

+0

それはそうです。 – maer

+0

**パスワードのsha1を保存しないでください。常に、bcrypt、argon、PBKDF2などの適切なパスワードベースのキー導出関数を使用してください。 Djangoの 'AbstractUser'の場合、単に' user.set_password(raw_password) 'を使用し、' password'フィールドをオーバーライドしないでください。 – knbk

答えて

0

ユーザーモデルを最初から作成する必要はありません。 You can extend django's User model to add the additional fields you want.これはお勧めの方法です。

そして、スーパーユーザを作成するための推奨方法(管理者ユーザとして読む)攻撃者が、アプリケーションのコードを実行することができるなら、あなたはもうセキュリティを心配する必要はありませんusing django-admin

+0

私はAbstractUserから継承しています。 – maer

+1

しかし、ほとんどのフィールドをオーバーライドしています。 – Hrishi

+0

新しいフィールドを追加するだけです – mbieren

関連する問題