Я разработал процесс, в котором я начинаю с начального ключа шифрования, который я кодирую в хэш SHA1, затем шифрую с помощью комбинации имени пользователя и пароля и сохраняю его в базе данных. Пароль (хэшированный или другой) никогда не сохраняется в базе данных и используется только при входе в систему для расшифровки ключа шифрования. Затем я использую это основное имя пользователя/пароль для создания дополнительных пользователей с паролями, в которых PHP или JavaScript кодирует ключ дешифрования с именем пользователя/паролем нового пользователя и сохраняет этот зашифрованный ключ в базе данных. Когда я пытаюсь расшифровать ключ шифрования из базы данных, используя комбинацию имени пользователя и пароля, я должен ожидать обратного хэша SHA1. Если я не получу действительный хэш SHA1, который может расшифровать данные, я знаю, что пароль неверный и данные непригодны для использования. У вас должна быть действительная комбинация имени пользователя и пароля, чтобы получить ключ дешифрования, который передается клиенту через SSL, расшифровывается с помощью функции JavaScript, а затем сохраняется в файле cookie для сеанса SSL.
Чтобы обойти систему, расшифровать данные и получить доступ к информации, вы должны быть заражены кейлоггером или трояном, который просматривал ваши файлы cookie во время этого сеанса входа в систему, в противном случае владелец сервера или клиент без комбинации имени пользователя и пароля могут использовать данные в базе данных без перебора. Используя 256-битные AES и надежные пароли (12+ символов, A-Z, az, 0-9, символы и т. д.), вы получите довольно сложное решение для взлома или, по крайней мере, такое, которое было бы болезненно пытаться.
Каждая учетная запись имеет функцию блокировки, поэтому, если вы попытаетесь войти через Интернет слишком много раз и потерпите неудачу, учетная запись будет заблокирована. Все PHP-страницы кодируют/декодируют параметры для предотвращения атак SQL-инъекций и проверки того, что сеанс PHP активен и совпадает с последним сеансом, отслеживаемым во время вашего входа в систему, а также проверяет работу вашего ключа шифрования. Каждый раз, когда вы входите в систему или посещаете страницу входа, предыдущий сеанс становится недействительным или, если время сеанса истекает, он также становится недействительным. Даже со всеми этими слоями он работает быстро и не позволяет людям использовать сценарии PHP, которые выводят JSON с использованием сфабрикованных POST для сценариев и атак путем внедрения SQL. Это также ограничивает возможность владельца/администратора сервера расшифровывать и читать вашу информацию, если она хранится у общего провайдера и т. д.
person
Jeremy
schedule
02.05.2011