是否可以拒绝访问数据库中复制的密码字段?

时间:2018-09-18 03:46:25

标签: python django security

我在数据库中的Django应用密码如下:

                    **EDITED**

但是,如果我将其复制给另一个用户,则可以登录该用户的帐户。

假设数据库遭到破坏或某种形式的注入,我是否可以检测是否以某种方式重复/复制了密码,以便拒绝访问该帐户或向管理员发出警报?

1 个答案:

答案 0 :(得分:0)

Selcuk所说,如果某人有权访问您的数据库,他/她可以执行系统生成密码之类的任何操作。

但是您可以更难更改密码。

如果要拒绝从数据库复制密码,则必须创建自己的用户模型并更新哈希算法,如下所示。

首先创建一个用户模型:

from django.contrib.auth.hashers import make_password, check_password
class MyUser(User):
    def set_password(self, raw_password):
      self.password = make_password(self.username + raw_password)
      self._password = raw_password

   def check_password(raw_password):
      def setter(raw_password):
          self.set_password(raw_password)
          self._password = None
          self.save(update_fields=['password'])
      return check_password(self.username + raw_password, self.password. setter)

通过这些更改,用户密码哈希包含用户名,并且其他用户的副本哈希无法正常工作