#php #mysql #authentication
#php #mysql #аутентификация
Вопрос:
Я готовлю веб-приложение, которое работает только в локальной сети для малого бизнеса. Я использую MYSQL и пишу интерфейс с помощью PHP.
Я не уверен, как лучше всего обращаться с пользователями. У меня примерно 20 разных людей, получающих доступ к приложению, и как минимум 3 разные группы с разными привилегиями. До сих пор я создавал пользователей и пароли непосредственно в MYSQL, используя таблицу users, в которой хранится личная информация (имя, фамилия, адрес электронной почты и данные для входа), но НЕ пароль.
Я думаю, что таким образом я могу добавить уровень безопасности, ограничив привилегии пользователей в MYSQL (например, чтобы кто-то не заходил на страницу и не вызывал запрос на УДАЛЕНИЕ).
Однако я беспокоюсь, потому что этот подход заставляет меня постоянно хранить пароль (при использовании приложения) в $ _SESSION (потому что мне нужно подключаться к БД почти на каждой странице).).
Приемлем ли этот подход?
Комментарии:
1. Почему это может привести к сохранению пароля в СЕАНСЕ? вы ошибочно используете учетную запись приложения пользователя для подключения к базе данных?
2. На большинстве серверов файлы сеансов PHP хранятся в виде обычного текста в папке, доступной любому, кто имеет доступ к серверу. Это делает хранение паролей пользователей в сеансе довольно большим риском для безопасности. Кроме того, я лично придерживаюсь мнения «если мне не разрешено удалять запись, не показывайте мне кнопку удаления», что означает, что приложение должно знать, что мне разрешено делать, чтобы оно могло скрыть кнопку, вместо того, чтобы пытаться ее использовать и позже обнаруживать, что запись не удалена.база данных мне не позволила.
3.@BoredGeek Небольшое примечание
password_hash()
создает ХЭШ, хэш НЕ является шифрованием4. Спасибо за комментарии. Я понимаю, что хранение сеанса небезопасно, и именно поэтому я ищу альтернативы. Но было бы нормально, если бы все входили в БД с одним и тем же пользователем MYSQL (в этом случае мне не нужно хранить pw в СЕАНСЕ)? Я осознаю риски, каковы решения?
5. «было бы нормально, если бы все входили в БД с одним и тем же пользователем MYSQL» … в веб-приложении, да. Вам нужно переосмыслить архитектуру: в базу данных входит приложение , а не пользователь. Пользователь входит в приложение . Итак, вам нужны имена пользователей и пароли для приложения, а не для базы данных. Они могут храниться в базе данных. Пароли, хранящиеся в базе данных, должны быть хэшированы для обеспечения безопасности — вы можете добиться этого с помощью встроенной функции PHP password_hash (и password_verify для проверки попытки ввода пароля по хэшированной копии).