Аутентификация PHP - область участников и дополнительный контент на общедоступной странице - PullRequest
0 голосов
/ 29 декабря 2011

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

http://php.about.com/od/finishedphp1/ss/php_login_code_6.htm

Похоже, что он шифрует пароли и избегает некоторых очевидных ошибок.

Также, возможно, глупый вопрос, но я хочу использовать аутентификацию по двум причинам: 1. Предоставить пользователю некоторые дополнительные функции на общедоступной странице.(Вспомните «Hello [username]» в верхней части страницы.)
2. Предоставьте пользователю также доступ к личным страницам.

Эти 2 типа приложений (вход в систему = добавленные материалы на общедоступной странице по сравнению с входом в систему).= доступ к приватной странице) зависят от одной и той же аутентификации, верно?

Другими словами, хотел ли я сделать одно или другое, или оба не должны влиять на то, как я думаю об аутентификации, верно?

Пожалуйста, дайте мне знать, если я напрашиваюсь на неприятности, используя для этого учебник about.com ...

Заранее спасибо.

СЛЕДУЙТЕ ЗА РЕДАКТИРОВАТЬ: Хорошо, такВ учебнике about.com есть несколько дыр.Ниже я обнаружил более полную систему, в которой вместо этого используется шифрование SHA1.Это также имеет подтверждение по электронной почте для новых пользователей и некоторые другие приятные функции.На первый взгляд, кажется ли это надежным маршрутом?

http://www.unlimitedtree.com/topic/1503-tutadvanced-login-member-system-php-tutorial/

1 Ответ

5 голосов
/ 29 декабря 2011

Да, вы просите неприятностей. Есть несколько причин, по которым я бы избегал подхода about.com :

  • Имя пользователя и пароль хранятся на стороне клиента. Вы никогда не захотите это делать. Во-первых: если злоумышленник получает доступ к cookie-файлу, он может использовать хэш идентификатора и пароля, чтобы захватить учетную запись. Второе: существуют огромные наборы данных в дикой природе, называемые радужными таблицами , которые позволяют злоумышленникам узнать, какая строка (= пароль) приводит к данному хэшу. Это означает, что если у вас нет длинного / сложного пароля, кто-то может использовать радужные таблицы, чтобы получить открытый текстовый пароль и попробовать его на этом и других веб-сайтах, на которые вы зарегистрированы.
  • Переменная $ username используется непроверенной и нефильтрованной. Привет SQL-инъекция .
  • Пароль зашифрован с помощью простой функции md5 (). MD5 подвергает вас риску коллизий хешей . В настоящее время вы должны использовать лучшие хеш-функции, такие как SHA-1 и использовать salt .

Безопасность - сложная тема. Я рекомендую вам использовать хорошо проверенные решения для аутентификации и авторизации, как это предусмотрено установленными платформами. Также подумайте о OpenID .

Несколько PHP-фреймворков и их компоненты аутентификации:

По поводу вашего вопроса:

Другими словами, хочу ли я сделать одно или другое, или оба не должны повлиять на то, как я думаю об аутентификации, правильно?

Да. Вы должны различать Аутентификация и Авторизация . Первый помогает вам определить, кто пользователь, а второй помогает вам узнать, что ему разрешено делать. Прочитайте это краткое введение , чтобы узнать о теме.

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