2013-05-17 8 views
0

У меня есть класс User, который хранит информацию о пользователе. Одно поле, которое хранится, когда я создаю учетную запись (она не сохраняется в классе в противном случае), является хешированным паролем.Должен ли я использовать пароль внутри или вне класса?

пароль передается через а из с момента, когда пользователь создает учетную запись в POST на другую страницу для обработки с введением данных MYSQL и т.д.

Мой вопрос, я должен передать сырой $_POST['password'] поля в класс и хэш внутри класса, или должен ли я использовать пароль снаружи и передать хэш классу для хранения?

Я не вижу никакого реального плюса или минуса, чтобы качать меня в любом случае. Я никогда не буду вызывать хеш-пароль из БД, который будет использоваться внутри класса пользователя (я не буду использовать класс пользователя для проверки входа).

+3

Просто не просите сервер базы данных хешировать его. –

ответ

2

нет безопасности, передающей ваши обычные текстовые пароли. Все, что имеет значение, - это хэш, прежде чем сохранять его навсегда. (Помните: сохранение его в сеансе является постоянным, так как данные сеанса сохраняются на диске.) Класс и все его данные присутствуют только для пользователя, который ввел пароль с открытым текстом.

Я бы посоветовал сделать это внутри класса: это позволит вам добавить соление и другие механизмы на центральном месте.

Имейте в виду, что вы будете выполнять другие проверки пароля во время выполнения регистрации: минимальная длина, допустимые символы и т. Д. Так что после всего этого происходит хеширование. Поскольку вы хотите иметь возможность включать как контролер, так и модель для дополнительных проверок, вам нужно хеширование в самом последнем месте: либо в $ user-> save(), либо в ORM-классе, если используется.

С уважением.

0

Ну, вы правы, оба решения хороши. Если вы не используете какое-либо соглашение, тогда вы должны придерживаться его. В любом случае, более важно, чтобы вы были связаны с тем, как вы пишете свой код. Так будет легче читать его, даже для вас через некоторое время.

3

Зависит, если вы используете соединение HTTPS. Если это так, вы можете ввести свой пароль в свой код, потому что его не будет видно. Хеш-пароль с Javascript требует некоторого кода (потому что нет функций для хэша в MD5 или SHA1, напрямую)

Как и Zsolt, хеширование его в свой класс позволяет использовать солевой механизм.

Смежные вопросы