mysql — шифрование / дешифрование строк PHP, я делаю это неправильно?

Эй, мне действительно нужно какое-то руководство.

ATM. Я использую этот метод шифрования / дешифрования для обычных строк.

function encrypt($pure_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
function decrypt($encrypted_string) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, "!@#$%#^&*", $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}

Но после некоторых исследований это может быть не самым безопасным способом? Данные хранятся в базе данных MYSQL.

И у меня нет доступа для установки пользовательских плагинов php на веб-сервер. Так есть ли другой безопасный способ сделать это?

И как мне создать / сохранить мой ключ шифрования?

Это не используется для пароля и т. Д.

0

Решение

Но после некоторых исследований это может быть не самым безопасным способом?

Вам как-то удалось поразить священную троицу небезопасного кода:

  1. Библиотека: использование заброшенной библиотеки (mcrypt), в которой много ошибок. OpenSSL можно использовать, но все еще сложно использовать его безопасно. разрядить / PHP-шифрование это гораздо лучшая альтернатива.

  2. Блочный шифр: Использование Blowfish, где даже его создатель сказал, что это небезопасно. AES (= Rijndael-128) — лучшая альтернатива, но это не то, о чем вам следует беспокоиться при использовании хорошей библиотеки (см. 1).

  3. Режим работы блочного шифра: использование режима ECB небезопасно почти в каждом случае (прокрутите вниз до пингвина). Как правило, необходим рандомизированный режим, такой как CBC, но это не то, о чем вам следует беспокоиться при использовании хорошей библиотеки (см. 1).

Это то, что относится к безопасной передаче данных (а затем и некоторых). Если вам нужно найти что-то в вашей базе данных на основе зашифрованных столбцов, то вам нужно подумать о добавлении хеш-столбца или использовании режима ECB.

И как мне создать / сохранить мой ключ шифрования?

Ключи обычно представляют собой простые байтовые массивы. Некоторые шифры, такие как DES, имеют слабые ключи, которые нужно проверить, и сгенерировать еще один. Хорошая библиотека обычно дает вам API для генерации ключа.

Хранение ключей является предметом многих споров. Подумайте о полезности шифрования некоторых данных, где ключ хранится рядом с зашифрованными данными. В конце концов, вам обычно требуется доступ и расшифровка этих данных часто. Там нет хорошего решения для этого. Если вы храните ключ шифрования на другом компьютере, а не на данных, вероятность того, что вы что-то не так и оставите уязвимой в сети, выше.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector