PHP Логин Системные вопросы - PullRequest
1 голос
/ 19 апреля 2011

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

У меня есть система входа в PHP, и это будет сайт сообщества, где пользователи будут регистрироваться и авторизоваться. Теперь мне нужна ваша помощь в этих вещах:

  1. Какой алгоритм хеширования достаточен для большинства сайтов (WP, Joomla, FB и др.)? простой MD5 с солью? или что?
  2. Что такое атаки, с которыми мне приходится иметь дело, помимо совершенно секретных сайтов, существующих на сайте, управляемом сообществом (их список просто краткий и может быть кратким объяснением того, чем они являются)
  3. Что является лучшим среди PDO и MySQLi (я видел, что PHP рекомендует последнее, но я хотел бы услышать от вас, ребята)

Большое спасибо, Stefano

Ответы [ 4 ]

2 голосов
/ 19 апреля 2011

1. Какой алгоритм хеширования достаточно для большинства сайтов (WP, Joomla, FB и др.)? простой MD5 с солью? или что

Вы должны использовать MD5 с солью как минимум. В идеале вы должны использовать другой алгоритм хеширования, поскольку MD5 оказался небезопасным по сравнению с другими доступными алгоритмами. Взгляните на различные доступные здесь hash () . Лично я бы использовал SHA512 с солью для каждого пользователя.

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

2. С какими атаками мне приходится иметь дело, кроме сверхсекретных сайтов, существующих на сайте сообщества

Основными атаками будут SQL Injection атаки (либо для кражи базы данных, либо для внедрения вредоносного кода на ваш сайт). Это также может быть связано с атакой Cross-Site Scripting , которая может позволить злоумышленнику разместить собственный код на вашем сайте (например, тег ) для заражения пользователей вирусами.

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

3. Что лучше среди PDO и MySQLi

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

Надеюсь, это поможет

0 голосов
/ 19 апреля 2011

Я не думаю, что MD5 очень хорош, поэтому этот декодер MD5: http://www.md5decrypter.com/

Лично я использую SHA1.Декодер SHA1, который я нашел в сети, не работает.Некоторые говорят, что SHA1 работает медленнее, но я не могу понять, почему вас это волнует, если вы используете его для входа в систему.

Mysqli должен предотвращать инъекционные атаки.информация о неудачных попытках входа в систему.Пример плохого: «Мы распознаем ваше имя пользователя, но ваш пароль неверный». Пример хорошего: «Имя пользователя и пароль не совпадают» -> используйте это для всех неудачных входов в систему, даже если имя пользователя НЕ в базе данных.*

0 голосов
/ 19 апреля 2011

Предлагаю вам прочитать это руководство от php-security-consortium.Это должно дать вам хороший обзор всех проблем, о которых вы должны знать.http://phpsec.org/projects/guide/

Вот еще один вопрос о стеке потока, который обрабатывает pdo & mysqli mysqli или PDO - каковы плюсы и минусы?

0 голосов
/ 19 апреля 2011

2) Вы должны быть особенно осторожны с атаками SQL-инъекций и XSS (межсайтовый скриптинг). Смотрите https://www.owasp.org/index.php/OWASP_Top_Ten_Project для большего количества векторов атаки.

3) Я использовал только MySQLi, но подумал, что это приличная библиотека

...