Как реализовать хорошую систему для входа / выхода в веб-приложение - PullRequest
1 голос
/ 24 апреля 2010

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

В настоящее время мы планируем, чтобы система входа в систему сохранила куки-файл с именем пользователя и сессионным ключом, и это все, что служит аутентификацией. Сервер проверяет соответствие двух. При входе / выходе создается новый ключ.

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

Есть ли лучший способ реализовать систему входа / выхода в PHP? Желательно, чтобы это не занимало слишком много времени на кодирование или ресурсы сервера. Есть ли что-то еще, что мне нужно реализовать, например, грубая защита и т. Д.? Как бы я поступил об этом?

1 Ответ

4 голосов
/ 24 апреля 2010

Убедитесь, что вы прочитали OWASP top 10 за 2010 год , особенно A3: Сломанная аутентификация и управление сеансами . Это важно, потому что вы уже нарушили его требования для https. Также обязательно прочитайте о CSRF, заставляя людей входить в систему или выходить из вашего сервиса - это уязвимость. Отключите список каталогов в вашем .htaccess: http://passpad.org/actions/

Я также рекомендую запускать брандмауэр веб-приложений, особенно если вы являетесь веб-приложением безопасности. mod_security бесплатен и остановит множество атак. Также не забудьте протестировать ваше приложение на наличие уязвимостей, используя wapiti (с открытым исходным кодом) или acunetix ($$$), но не забудьте протестировать свое приложение с отключенным WAF.

С точки зрения защиты от перебора мне очень нравится подход gmail. Не подсказывайте им капчу, пока они не получат достаточно «тепла». Тепло может накапливаться, выполняя плохие действия против вашей системы. Нагрев назначается IP-адресу, а не сеансу. Например, если они подписываются на 2 учетные записи пользователей, вы можете попросить их ввести capthca для 3-й. Если у вас есть 3 неудачных попытки входа в систему, вы должны их запросить. Если они решают капчу, вы можете «охладить» их, снизив их теплоту сгорания или установив ее на ноль. Используйте reCpathca, безусловно, лучший.

...