2012-02-06 1 views
2

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

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

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

Спасибо,

ответ

4

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

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

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

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

+0

Большое спасибо ** ultimA ** за отличный ответ. Я вижу, что вы указали все возможные проблемы, которые вызывают беспокойство. Я считаю, что мне нужно искать решения для всех этих вопросов. Еще раз спасибо. –

+1

«перечислены все возможные проблемы» - Спасибо, но список нигде не близок к завершению. Это были только примеры, и все еще есть другие вещи, связанные с безопасностью, такие как регулирование входа в систему, чтобы убедиться в том, что все входные данные для ваших скриптов (аргументы и пользовательские входы) проверены, используя хороший случайный источник, используя функции браузера (HSTS, x-frame- варианты и т. д.) и, вероятно, куча других вещей, которые либо не приходят мне на ум, либо я даже не знаю. – ultimA

1

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

+0

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

+0

просто быстрый помощник по вопросу, есть ли полная и безопасная система, которая, как известно, очень хороша и не бесплатна! –

+0

Спасибо. Думаю, лучше использовать b-crypt, потому что он намного лучше и безопаснее. ура –

2

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

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

+0

Спасибо за комментарии. очень верно, MD5 уже не годится, так как технология становится все сложнее и лучше. Кстати, спасибо за подсказку о OWASP. это отличная система. –

+0

BTW, я нашел бесплатное программное обеспечение для управления пользователями [majordojo] (http://www.majordojo.com/php-users/), это неплохо. –

1

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

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

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

С помощью google вы найдете много информации обо всех методах.

+0

@ tbaun89 Большое спасибо за замечательные комментарии. Вы совершенно правы, я считаю, что тестирование того, насколько хорошо или плохо, реализация очень важна, поэтому я могу проверить, насколько она сильная или слабая. –