подскажите начинающему php-программисту
Vladimir Smagin
21h на blindage.org
Чт Авг 5 18:36:02 BST 2010
хеши обычно хранить смысла нет. юзеры будут делать пароли типа 123 или
йцукен. как не крути, а БУДУТ. даже если ты говнокодер и самсебеадмин и
базу твоего сайтика сольют в первый же день, то мд5 все равно очень
быстро сломается по причине лени самого юзера. практика показывает, что
сами сайты ломают редко. все пароли добываются обычными троянами,
уловками и тупым перебором паролей. но даже если ты захочешь хранить
хеши, то crypt умеет делать и пхп, и сам мускуль. при регистрации
получил от юзера пароль, получил его хеш и записал в базу этот хеш. при
авторизации опять получаешь пароль, берешь от него хеш и сравниваешь с
хешем из базы данных. все элементарно и просто.
теперь о базе данных. данные пользователей хранятся в таблицах
пользователей. если есть группы пользователей, то должна быть таблица
групп. если пользователь имеет доступ к нескольким группам, то должна
быть и таблица связи пользователь-группа (например, группа юзеров
"новости" имеет доступ только к новостям и группа юзеров "закачки" имеет
доступ только к закачкам. а админ имеет доступ к обоим разделам, поэтому
он сразу в 2 группах).
например:
таблица "пользователи"
- идентификатор_пользователя (ПК, ЧИСЛО)
- имя_пользователя (СТРОКА)
- емыло (СТРОКА)
- пароль (СТРОКА) <-- тут решать тебе хранить открытый пароль или хеш
таблица "группы" (довольно грубо и просто. при желании можно улучшить
структуру)
- идентификатор_группы (ПК, ЧИСЛО)
- группа_по_умолчанию (БУЛЬ) <-- например, группа анонимуса
- право_чтение_записей_новостей (БУЛЬ)
- право_чтение_записей_закачек (БУЛЬ)
- право_запись_новости (БУЛЬ)
- право_запись_закачки (БУЛЬ)
таблица "группа_пользователь"
- идентификатор_пользователя (ПК, ЧИСЛО)
- идентификатор_группы (ПК, ЧИСЛО)
таблица групп это простой граф, определяющий что может делать группа, а
что нет. например, можно создать 2 группы: анонимус и юзер. анонимусы
могут только читать, но не могут писать. юзеры могут и то, и другое.
On 08/05/2010 10:44 PM, std_out wrote:
> Hi all !
> Пришло время делать в моем веб-приложеньице раздельный доступ для разных
> категорий пользователей.
> Посоветуйте, как организовать авторизацию.
> Не в смысле, что там кукисы-сессии, а где и в каком виде наиболее
> удобно/безопасно хранить пароли.
> Т.е. хранить наверное все-таки в базе данных приложения (в моем случае
> MySQL), а вот в какой форме - вопрос ...
> В виде простого текста наверное будет неправильно, видимо надо их
> как-нибудь шифровать/расшифровывать.
> Писать свою процедуру шифрования-расшифровки, думаю, несеръезно.
> Как это обычно делается ?
>
>
>
Подробная информация о списке рассылки ubuntu-ru