gpt4 book ai didi

python - 为什么在 django/python 中创建自己的用户类来管理用户信息是不好的做法?

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:17 25 4
gpt4 key购买 nike

为什么在 django 中创建自己的用户类而不是使用 django 内置的用户函数被认为是不好的做法?

P.S 我想创建的用户类包含他们的电子邮件、密码(散列整数)、名称和用户类型的字段。使用 python 的 hash() 方法对密码进行哈希处理。

hash(password_string);

最佳答案

使用您自己的 User 类是 fully supported甚至受到包括我在内的一些人的鼓励。它允许进行各种自定义,例如使用电子邮件作为用户名、提供用户类型或您能想到的几乎所有内容。

虽然支持提供您自己的身份验证机制,但如果您没有安全方面的经验,强烈建议不要提供。您应该基于 Django 的身份验证机制和 Django 使用的散列函数的多年经验,并依靠社区对安全漏洞的持续关注。

至于使用内置的hash(password_string)存储密码?您最好以纯文本形式存储密码。内置的 hash() 函数专为提高速度而设计。它不是加密安全的,而且速度非常快。这意味着什么?第一个意味着碰撞不是均匀分布的。一些散列值出现的次数比其他的多,这意味着一些密码天生就比较弱,与其他密码相比会相等。第二个意味着获得数据库中密码的攻击者可以简单地暴力破解这些值。您使用的是单次迭代,这意味着攻击者每秒可以尝试数十亿个密码。您没有使用盐,这使得密码列表怀疑并行性和彩虹表。更不用说,在 Python 3 中,hash() 函数以随机值作为种子,每个新的 Python 进程都会为相同的密码生成不同的哈希值,即密码只会有效对于那个特定的 Python 进程,直到它重新启动。

这只是冰山一角。

所以请随意推出您自己的 User 类,使用任何您喜欢的用户名,提供您想要的任何其他属性,但是拜托,拜托,请为每个人使用 Django 的默认身份验证机制清酒。

关于python - 为什么在 django/python 中创建自己的用户类来管理用户信息是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30792678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com