Я разработал процесс, в котором я начинаю с начального ключа шифрования, который я кодирую в хэш SHA1, затем шифрую с помощью комбинации с именем пользователя/паролем и сохраняю его в базе данных. Пароль (хешированный или иным образом) никогда не сохраняется в базе данных и используется только для входа в систему, чтобы расшифровать ключ шифрования. Затем я использую это имя мастера/пароль для создания дополнительных пользователей с паролями, в которых PHP или JavaScript кодирует ключ дешифрования с именем пользователя/паролем нового пользователя и сохраняет зашифрованный ключ в базе данных. Когда я пытаюсь дешифровать ключ шифрования из базы данных, используя комбинацию имени пользователя/пароля, я должен ожидать хэш SHA1. Если я не получу действительный хэш-файл SHA1, который может расшифровать данные, тогда я знаю, что пароль неправильный, и данные непригодны для использования. У вас должна быть действующая комбинация имени пользователя и пароля, чтобы получить ключ дешифрования и который передается клиенту через SSL, дешифруется с помощью функции JavaScript, а затем сохраняется в cookie для сеанса SSL.
Чтобы обойти систему, расшифруйте данные и получите доступ к информации, которую вы должны были бы заразить, с помощью ключа-регистратора или трояна, который просматривал ваши файлы cookie во время этого сеанса входа в систему, в противном случае владелец сервера или клиент без имени пользователя/комбинация паролей может использовать данные в базе данных без грубой принудительной установки. Используя AES 256-битные и надежные пароли (12 + символов, A-Z, a-z, 0-9, символы и т. Д.), И у вас есть довольно сложное решение, или, по крайней мере, одно, что было бы больно пытаться.
У каждой учетной записи есть функция блокировки, поэтому, если вы пытаетесь входить в систему через Интернет слишком много раз и терпеть неудачу, учетная запись заблокирована.Все PHP-страницы кодируют/декодируют параметры для предотвращения атак SQL-инъекций и проверки сеанса PHP активны и соответствуют последнему сеансу, отслеживаемому во время входа в систему, а также проверяет ваш ключ шифрования. Каждый раз, когда вы входите в систему или посещаете страницу входа в систему, предыдущий сеанс считается недействительным, или если ваш сеанс не работает, он также недействителен. Даже со всеми этими слоями он быстро и не позволяет людям использовать PHP-скрипты, которые выводят JSON с использованием сфабрикованных POST-скриптов и атак SQL-инъекций. Это также ограничивает способность владельца/администратора сервера расшифровывать и читать вашу информацию, если она хранится у общего поставщика и т. Д.
На самом деле это уже задано здесь http://stackoverflow.com/questions/2210011/where- должен-один-store-the-cipher-key-when-using-aes-encryption-with-php –
В конечном итоге я вижу, что это похоже, но не тот же вопрос - возможно, я должен спросить, можно ли зашифровать одним ключом (public) и расшифровать с помощью другого (частного)? – JM4