Что лучший способ состоит в том, чтобы хранить уязвимые данные в MySQL?

Я управляю базой данных MySQL из Сценариев PHP. коммуникация между сервером и клиентом защищается через SSL. Я храню данные учетной записи пользователя, которые уязвимы.

Существует ли способ зашифровать эти данные при вводе в DB? Что лучший способ состоит в том, чтобы защитить эти уязвимые данные?

Править: Я использую задание КРОНА для обновления данных, которые полагаются на этот пароль для входа в систему в учетную запись пользователя. Таким образом, мне нужен способ хешировать этот пароль и смочь получить старый пароль для моих задач задания КРОНА.

Что лучший способ состоит в том, чтобы достигнуть его?

Спасибо

12
задан rook 29 October 2010 в 04:16
поделиться

4 ответа

Серьезно, НЕ ИСПОЛЬЗУЙТЕ MySQL aes_encrypt () Это самый небезопасный метод использования блочного шифра. Он использует режим ECB, и я могу дать простой пример, демонстрирующий, почему это серьезная ошибка.

Обычное текстовое сообщение:

alt text

То же сообщение, зашифрованное в режиме ECB (неважно, какой шифр вы используете): alt text

ТОЧНО такое же сообщение в режиме CBC (опять же, это не независимо от того, какой шифр вы используете): alt text

Есть , даже больше причин не использовать mysql aes_encrypt, в первую очередь каждый отправленный вами запрос будет также иметь ключ aes, который вы используете. Если база данных скомпрометирована, злоумышленник включит ведение журнала, просто получит ваш ключ AES и расшифрует всю базу данных .

Так что следует использовать? Мне пока нравится этот класс . Он использует режим CBC с функцией String2Key и IV. Вы можете использовать первичный ключ в качестве своего IV, каждое сообщение должно иметь уникальный IV. Это нормально, если злоумышленник знает IV, и если они являются последовательными, , пока реализация блочного шифра безопасна. Повторное использование IV сделало WEP гораздо менее безопасным .

15
ответ дан 2 December 2019 в 07:20
поделиться

Есть несколько основных способов сделать это (если вы не предоставите более подробную информацию о том, чего именно вы хотите достичь).

  • Отключить удаленный доступ.
  • Отслеживайте журнал доступа к MySQL.
  • Требовать использования надежных и безопасных паролей со стороны клиента.
  • Очистите ВСЕ вводимые пользователем данные перед сохранением в базе данных.
  • Настройте свой php для обеспечения безопасности. (register_globals, safe_mode и т. д.)
  • Используйте встроенные функции шифрования mysql, как указано. http://dev.mysql.com/doc/refman/5.1 / en / encryption-functions.html

Если вы защищаете себя от желающих быть хакерами, все в порядке. Опять же, я хочу, чтобы вы уточнить немного подробнее.

Вы также должны учитывать необходимый вам уровень безопасности и скорость работы алгоритма.

2
ответ дан 2 December 2019 в 07:20
поделиться

В MySQL есть функции шифрования,

http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

Например, вы можете использовать aes_encrypt () для хранения данные в зашифрованном виде.

Однако в этих функциях есть некоторые слабые места,

  1. Они не поддерживают IV или блочную цепочку. Один и тот же текст всегда зашифровывается в один и тот же зашифрованный текст, поэтому он не подходит для конфиденциальных данных, таких как пароли.

  2. Нет ключевой информации, поэтому очень сложно повернуть ключи.

3
ответ дан 2 December 2019 в 07:20
поделиться

Слишком мало информации для действительно полезного ответа, но вот типичные случаи:

Если вы храните пароли там, где вы должны проверить правильность ввода пользователя, но вы этого не сделаете. нужны сами исходные данные, можно хранить хеш (SHA1 / SHA2). Найдите все методы хеширования, чтобы сделать это правильно.

Если вам нужно прочитать исходные данные, вы можете использовать функции шифрования. Хорошим выбором для симметричного шифрования является AES. Однако проблема здесь заключается в управлении ключами. Где вы храните свой ключ, который используется для шифрования / дешифрования? Это очень распространенная проблема, и в зависимости от контекста существуют разные решения.

1
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: