Безопасность входа пользователя.Сессия против таблицы активных пользователей Mysql - PullRequest
0 голосов
/ 30 августа 2011

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

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

Например, пользователи входят в систему. Вместо некоторого сеанса 'user', я могу просто вставить новые данные в active_users_table и добавить туда ip пользователя.

И на всех страницах я могу спросить у клиента ip, затем перейти к таблице mysql, проверить, зарегистрирован ли такой ip-пользователь, если да, проверить, какие права имеет пользователь, и дать ему соответствующий доступ.

Вопрос 1. Разве это не просто? проще сделать, чем защищать сессии?

Вопрос 2. Если эта система достаточно хороша, чтобы я мог остановить свое исследование и построить сайт, используя этот метод, вопрос в том, как понять, что пользователь все еще активен? Если он хорошо нажмет кнопку «Выйти», я выйду из него и удалю его запись из таблицы. Но если он перезагрузит свой компьютер или что-то? как понять когда запись будет доступна для уничтожения?

Вопрос 3. один парень сказал мне использовать mysqli вместо команд mysql, когда я работаю с базой данных. Они одинаковые, поэтому мне просто нужно добавить «i» ко всем моим командам, и это нормально, или mysqli немного отличается и требует некоторого изучения? а также почему это лучше? Почему я не могу использовать обычные команды mysql, к которым привык?

Ответы [ 2 ]

4 голосов
/ 30 августа 2011

НЕТ, это не так просто. (если бы это было так просто, мы бы сделали это так:)

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

Текущий принятый стандарт: используйте длинный токен с высокой энтропией и сохраняйте егов cookie.
Для PHP используйте встроенные в PHP функции сессии.

Безопасность - очень деликатная область знаний, лучший совет: не изобретайте свою собственную схему безопасности.

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

1 голос
/ 30 августа 2011

Сеанс может быть и часто хранится в базе данных. Таким образом, нет сессии против базы данных. Сеанс - это способ сохранения информации между HTTP-запросами, поскольку HTTP - это протокол без сохранения состояния.

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

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

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

Вопрос 3 не имеет никакого отношения к сессии и заслуживает отдельного вопроса. Но mysqli - просто более новое расширение и поддерживает больше функций. В большинстве случаев он используется точно так же, как и функции mysql.

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