我正在用 Django 从头开始编写帐户激活过程,这是我的基本思考过程:
创建一个模型,如:
class UserAccountActivation(models.Model):
lock = models.CharField(max_length=16)
key = models.CharField(max_length=16)
必要时使用如下函数生成锁和键值:
def generate_entry():
"""Generate a random alphanumeric string between 8 and 16 characters long."""
''.join(random.choice(string.ascii_lowercase + string.digits) for x in range(random.randint(8,16))
编写这样的链接:
r'^activate/(?P<lock>\w{8,16})/(?P<key>\w{8,16})/?$'
并将其发送出去。当他们点击链接时,我激活帐户并禁用激活密钥。
我最初考虑散列随机字符串作为额外的预防措施,但这似乎没有必要,而且在我的 URL 中有两个 32 长度的键会很长:
account/12345678/12345678
or
account/12345678901234567890123456789012/12345678901234567890123456789012
这是处理帐户激活的安全且推荐的方式吗?是否有必要在字符串上设置随机长度?