Аутентификация / Контроль доступа в PHP - PullRequest
1 голос
/ 26 февраля 2010

Некоторое время назад я создал эту сеть на основе LAMP. В то время я написал свою собственную систему аутентификации пользователей и контроля доступа. Он проверяет, вошел ли пользователь с правильным паролем и имеет ли он / она правильный уровень доступа к данной странице. Информация о состоянии обрабатывается через сеансы PHP, в то время как имена пользователей, соленые, хешированные пароли и уровень пользователя хранятся в серверной части MySQL. Все пользовательские входы очищены и т. Д. Пользователи должны получить доступ к сайту с помощью SSL.

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

Можете ли вы дать мне предложения для:

  • некоторые исчерпывающие списки тестов безопасности, которые я мог бы реализовать и запустить против них
  • лучшие практики для внедрения такого рода системы

Есть ли надежный фреймворк с открытым исходным кодом или набор библиотек, который вы могли бы порекомендовать использовать вместо домашнего? Общепринятое мнение состоит в том, что обычно лучше принять зрелую, проверенную систему, чем писать свою собственную с нуля. Что бы вы порекомендовали?

Ответы [ 2 ]

3 голосов
/ 28 февраля 2010

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

2) Это хорошее и короткое руководство на 3 страницы (к сожалению, оно на итальянском языке, но вы можете использовать панель инструментов переводчика Google для перевода всех страниц) В любом случае из того, что вы говорите, вы не новичок в программировании на PHP, я бы порекомендовал:

  • дезинфицирующий ввод (но вы сказали, что сделали)
  • используя как минимум addlshes (или mysql_real_escape_string) при игре с БД
  • php.ini config: REGISTER_GLOBALS должна быть выключена
  • внимательно относитесь к тому, как установить ERROR_REPORTING, он может распечатать личные данные при обнаружении ошибки
1 голос
/ 26 февраля 2010

Платформа Zend имеет встроенную аутентификацию, хотя Zend имеет тенденцию быть немного раздутой. Можно использовать только кусочки Zend, но я никогда не пытался использовать только бит аутентификации.

Есть также несколько библиотек аутентификации в PEAR - PEAR :: Auth, который находится в стабильном выпуске, и PEAR :: LiveUser, который находится в бета-версии и последний раз был выпущен (как бета-версия) в 2008 году.

Надеюсь, это даст вам хорошее начало.

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