Создание пароля с дополнительным логическим полем - PullRequest
0 голосов
/ 19 июля 2011

У меня следующая проблема.Я сделал регистрационный пароль для своего сайта, чтобы пользователь мог знать этот пароль, чтобы иметь возможность зарегистрироваться.Также я хотел бы, чтобы к нему было привязано логическое значение, которое определило бы, какие права пользователь получает с этим паролем.

class RegistrationPassword(models.Model):
    password = models.CharField(max_length=20, unique=True)
    poweruser = models.BooleanField(default=False)

    def __unicode__(self):
        return self.password

Я регистрирую это с помощью admin, чтобы я мог добавлять и удалять пароли и делать poweruserсвязаны с ними либо правда, либо ложь.Затем, когда пользователь регистрируется, я проверяю логическое значение следующим образом:

registrationpassword = form.cleaned_data.get('registrationpassword')
ispoweruser = RegistrationPassword.objects.get(password=registrationpassword).poweruser

Проблема в том, что пароль не хешируется и не шифруется.Как мне повысить безопасность моего метода?

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Также я хотел бы, чтобы с ним связывалось логическое значение, которое определяло бы, какие права пользователь получает с этим паролем

Не. Используйте группы. Вот для чего они.

Если этот «опытный пользователь» не является суперпользователем, вам нужно определить группу, которая имеет дополнительные привилегии, и поместить опытных пользователей в эту группу.

Каждая из ваших функций просмотра должна подтвердить, что пользователь находится в соответствующей группе для использования функции просмотра.

Теперь ispoweruser - это простой тест для имени группы, без дополнительных паролей и дополнительных логических значений.

0 голосов
/ 19 июля 2011

Проблема в том, что пароль не хэширован и не зашифрован.Как мне повысить безопасность моего метода?

Чаще всего пароли хэшируются с использованием алгоритмов хеширования SHA-x или MD-5.В таком случае разработчики хешируют пароль и сохраняют хешированную копию в базе данных или коде.Таким образом, нигде нет читаемой человеком копии.

Для аутентификации по этому паролю вы должны создать HASH для введенного пользователем пароля, а затем сравнить его с сохраненным паролем.

Если вы создаете веб-приложение, хеширование может быть выполнено в javascript перед отправкой веб-страницы, таким образом хешированный пароль путешествует по сети, что затрудняет хакерам перехват и затем их «хэш»

Хэширование Javascript выглядит следующим образом (предположим, что мы используем md5, а пароль пользователя «test»)

  1. сгенерируйте md 5 «test», который равен 098f6bcd4621d373cade4e832627b4f6, и сохраните его в базе данных
  2. На стороне клиента (javascript) получить идентификатор сеанса
  3. Допустим, пользователи сначала вводят "test" md5, так что результат 098f6bcd4621d373cade4e832627b4f6
  4. md5, снова сперед сессионным идентификатором (скажем, сессионный идентификатор - 9985), поэтому новый md5 - это f93437292fca0cf9b71bf1f3fe6c4679
  5. send ONLY хэш серверу
  6. сервер может получить идентификатор сессиииспользуя один из методов библиотеки, например, в Java, можно получить идентификатор с помощью session.getId ();
  7. выполнить запрос, которыйаналогично следующему

    выберите md5 (concat (pwd, '9985')) как newpwd из пользователей, где uname = 'xyz'

  8. соответствует "newpwd" с введенным пользователем значением

Если кто-то попытается отправить данные через HTTP-ответ, аутентификация не пройдет, потому что сервер каждый раз создает новый идентификатор сеанса.Поэтому, если пользователь выходит из системы и снова входит в систему, новый хешированный пароль отправляется по проводной сети.

См. Следующие ссылки для справки

Самый безопасный метод Python для хранения и восстановления паролейиз базы данных

В каком формате хранятся пароли Django в базе данных?

http://en.wikipedia.org/wiki/Salt_(cryptography)

0 голосов
/ 19 июля 2011

Используйте auth app и user.is_superuser.Не изобретай велосипед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...