1

我有一个拥有数千名注册用户的网站。万一有人从我的数据库中窃取了密码,我希望有一个计划 A和一个计划 B。我猜B计划是更改所有用户密码(使用一个小的python脚本和一个随机密码生成器)并将这些新密码通过电子邮件发送给用户。我可以轻松做到这一点。

计划 A(听起来更合适,我不知道该怎么做)将强制用户通过使旧密码过期来创建新密码,这是他们在攻击后第一次访问页面时。

Django有这样的功能吗?怎样才能高效、快速地完成?

注意:目前我的用户/用户配置文件模型在设计时并未考虑到这种情况。

4

2 回答 2

5

您应该做的第一件事是停用所有用户,使他们无法登录。一种方法是使用set_unusable_password(). 这将使所有密码无效;或者你可以设置is_activeFalse. 这将禁用用户批发。

接下来,您可以让用户重置他们的密码。也有内置的助手和表单

于 2013-06-06T09:28:34.393 回答
1

在我看来,您应该选择 B 计划。检查管理命令

from django.core.management.base import NoArgsCommand
from django.contrib.auth.models import User

class Command(NoArgsCommand):
    help = _('Change password of all users.')
    def handle_noargs(self, **options):
        users = User.objects.all()
        for user in users:
            # generate random password
            random_pwd = 'some random password'
            user.set_password(random_pwd)
            user.save()
            # send email to user
于 2013-06-06T09:07:18.850 回答