системы управления пользователями php - PullRequest
2 голосов
/ 06 февраля 2012

Я делаю последние шаги, чтобы открыть свой сайт, но единственное, что сводило меня с ума, это управление пользователями php.Я нашел много ресурсов о создании этих систем и считаю, что могу написать их по-своему.Дело в том, что когда дело доходит до безопасности, я так волнуюсь, что делать.Например, когда дело доходит до отправки конфиденциальной информации по SSL, некоторые люди предлагают убедиться, что информация зашифрована в регистрационной форме, чтобы злоумышленник не смог ее взломать.И некоторые другие предлагают убедиться, что сообщения об отладке не отображаются, когда происходит ошибка, чтобы злоумышленник не мог отследить ссылки .etc.

Теперь, когда я прочитал, что md5 больше не является безопасным, поэтому мне интересно, как бы хэшировать новый пароль пользователя и т. Д. Я нашел ссылку на некоторых программистов, которые уже предлагают некоторое управление пользователямино не уверен, что они достаточно хороши, так как я беспокоюсь о безопасности как о приоритете CodeCanyon

, так что теперь, на каких мерах безопасности я должен сосредоточиться?Есть ли ресурсы, связанные с этим?

Спасибо,

Ответы [ 4 ]

4 голосов
/ 06 февраля 2012

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

Вот несколько полезных советов для систем аутентификации.

  • Не показывать результаты отладки
  • Неиспользуйте хеши MD5.SHA2 или даже лучше, bcrypt намного лучше
  • Использование солей при хранении паролей
  • Использование одноразовых номеров в ваших формах (одноразовые токены)
  • Всегда требуется шифрование SSL между сервером и клиентом
  • При доступе к вашей базе данных на сервере убедитесь, что утечка информации или ее манипуляции на стороне клиента невозможны (например, избегайте атак с использованием инъекций, драйверы баз данных используют подготовленные операторы и т. Д.)
  • Убедитесь, что все неудачные входы в систему (независимо от причины) занимают одинаковое количество времени для предотвращения атак по времени
  • Когда вошедший в систему пользователь запускает рискованную операцию (изменение pwd, оплаты и т. Д.), Повторно выполните аутентификациюего
  • Никогда не храните пароли открытым текстом, никогда, нигде
  • Требуйте минимальной сложности для пароля
  • !!!Защитите свои php-сессии (еще одна большая тема, заслуживающая отдельного обсуждения) -

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

2 голосов
/ 06 февраля 2012

Отвечая на ваш прямой вопрос: было доказано, что у MD5 есть столкновения, и вокруг плавают радужные таблицы (см. Википедия ).PHP имеет довольно много хеш-функций , доступных , и все они имеют свои преимущества и недостатки.Также см. Раздел комментариев на php.net.

Что касается общей безопасности веб-приложений, я рекомендую вам взглянуть на OWASP проект , посвященный повышению безопасности веб-приложений.Хорошим началом было бы взглянуть на Десятку уязвимостей безопасности («Десятка» в синем поле).

1 голос
/ 06 февраля 2012

Сначала вы должны отправить свои данные через SSL (TSL) на сервер, это зашифрует.Также вы должны использовать защиту CSRF для любой формы, которую вы отправляете на сервер.

Когда вы реализовали свои функции, и они работают, вы должны попытаться взломать ваш сайт самостоятельно.Попробуйте ввести SQL, JS через формы, попытаться манипулировать датой после отправки формы, вы также можете попытаться создать ошибки, которые будут записаны в ваш журнал ошибок PHP, даже если они могут быть выполнены, если настройки вашего сервера слабые. (http://en.wikipedia.org/wiki/Hardening_(computing))

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

Вы найдете много информации обо всех методах через Google.

1 голос
/ 06 февраля 2012

используйте sha1 для хранения пароля, запретите ввод SQL и скрипт xss в качестве поля ввода.угон сеанса, предотвращение фиксации.

...