#php #apache #encryption #mysqli #key-storage
#php #apache #шифрование #mysqli #хранилище ключей
Вопрос:
У меня есть веб-приложение, которое требует от пользователя регистрации и ввода некоторых личных данных.
При регистрации генерируется главный ключ, который затем шифруется с использованием ключа, полученного из пароля, и сохраняется в базе данных. Когда пользователь входит в систему, главный ключ расшифровывается и используется для расшифровки пользовательских данных.
Где лучше всего хранить расшифрованный главный ключ, чтобы пользователю не приходилось повторно вводить пароль каждый раз, когда требуется доступ к его данным?
Мои мысли по этому поводу на данный момент таковы:
- Пользователь входит в систему, и полученный по паролю ключ используется для расшифровки главного ключа
- Генерируется новый случайный ключ, который используется для шифрования главного ключа
- Сохраните недавно зашифрованный главный ключ в таблице сеансов базы данных
- Сохраняйте вновь сгенерированный случайный ключ в файле cookie в браузере пользователя, срок действия которого истекает в конце сеанса / выхода из системы.
Веб-приложение размещено третьей стороной, поэтому у меня нет возможности создавать зашифрованные разделы и т.д.
Кто-нибудь может предложить лучший способ сделать это?
Спасибо
Комментарии:
1. Этот вопрос кажется основанным на мнениях / слишком широким.
2. github.com/defuse/php-encryption — смотрите:
KeyProtectedByPassword
. Вы можете расшифровать его в$_SESSION
и затем, пока вы используете HTTPS и хорошо настроили свой сервер, вы можете противостоять распространенным моделям угроз. Если у вас параноидальная модель угроз, вам, вероятно, вообще не следует размещаться у третьей стороны.