Как только вы храните мастер-пароль на диске, любое шифрование становится бесполезным и просто снижает производительность.
Если кто-то просто извлек HDD во время сеанса, он может легко использовать этот пароль для открытия файла.
Если у вас грубый администратор, вы просто ... вы просто закончили, потому что он может просто сохранить пароль перед открытием файла. Поэтому я предполагаю, что администратор на вашей стороне, и у вас хорошо настроена система.
Первое, что вы можете сделать, это шифрование диска . Это на самом деле значительно повысит безопасность. Если кто-нибудь украл ваш жесткий диск с открытым паролем в сеансе, он не сможет прочитать его.
Чем использовать HTTPS ... Это должно быть обязательно при работе с паролями, и вся ваша инициатива бесполезна, если вы используете только HTTP.
В php ... Я не уверен, что вы можете сделать что-нибудь. Но когда вы используете https, вы можете сделать это:
- хранить пароль в
$pass
- генерация временного случайного ключа шифрования (
$rand
)
- хранить пароль в зашифрованном виде
$rand
(я использовал только XOR)
- хранить
$rand
в $_COOKIE
переменную
- используйте значение
$_COOKIE
для расшифровки мастер-пароля при каждом запросе
* +1032 * Пример: * 1 033 *
$pass = 'iddqd';
$rand = 'abcde';
echo base64_encode( $pass^$rand); // CAYHFQE=
$_COOKIE['phrase'] = $rand;
$_SESSION['password'] = base64_encode( $pass^$rand);
unset( $pass);
// And on every other request:
$pass = $_COOKIE['phrase'] ^ base64_decode($_SESSION['password'])
Какая добавленная стоимость? Хранение пароля в виде простого текста зависит только от аутентифицированного доступа к диску.
Генерация временной фразы и сохранение ее в браузере пользователя (и только на стороне пользователя) заставляет ее полагаться на аутентифицированный доступ к диску + значение cookie, генерируемое при аутентификации пользователя (которое должно быть трудно подделать).
И еще одна вещь, вам не нужно беспокоиться об отправке фразы в каждом запросе (вы можете менять ее каждые 10-100-1000 запросов) при использовании https.