Как можно шифровать данные в базе данных MySQL?

Мне необходимо обезопасить хранения данных в MySQL. Какими лучше способами или средствами всё это сделать. Какие-то способы шифрования данных или иные методы?
  • Вопрос задан
  • 12761 просмотр
Решения вопроса 1
@mefutu
Присоединяюсь к предыдущим ответам. Даже если вы и решите данные шифровать, то прежде всего подумайте, как сильно просядет ваша производительность, ведь шифровка/дешифровка- операции совсем не бесплатные. И смысл весь теряется в этом, если отправлять вы их будете в открытом виде. Лучше подумайте, как защитить канал передачи.
Используйте api промежуточный сервер с разделенными ролями, а сам сервер с бд спрячьте за этой прослойкой, в таком случае вам и шифровать ничего не прийдется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Шифровать данные смысла нет. По шифрованным данным не будет нормально работать индексация. К тому же, если кто-то сольёт всю базу, то, скорее всего, он получит и ваши скрипты, которые шифруют/дешифруют данные при работе.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Родное шифрование всей БД (с рабочим индексированием) есть начиная с mysql 5.7 - статейка
2. Можно использовать раздельное хранение скриптов и базы. Например, на разных хостингах с авторизацией по ключам через промежуточный REST-интерфейс.
3. Ограничить права пользователя БД, указанного в web-скриптах только на определённые операции.
4. Использовать обфускацию серверных скриптов, работающих с БД.
5. Использовать встроенные функции шифрования, ключи/пароли для расшифровки - хранить в "разорванном" виде (из нескольких частей), разбросанных по нескольким скрипт-файлам и/или своим REST-сервисам: чтобы его можно было получить только собрав все компоненты вместе.
Ответ написан
Anubis
@Anubis
Люблю корейскую кухню и веб-разработку
Нет, хранить пароли в первозданном виде не стоит. Обычно хранят хэши, а правильность ввода при авторизации производят посредством хэширования введённого значения по тому же алгоритму, что и сохранённый в базе и последующей их сверкой.
Ответ написан
megafax
@megafax
web-программист
Для шифрования в своей практике использовал шифрование и расшифровку именно на уровне приложения (правда было приложение на nodejs). В базе хранились шифрованные данные и передавались по каналу связи аналогично шифрованные данные. Их расшифровкой и проверкой целостности занималось как раз приложение. Ключ для расшифровки указывался один раз при запуске приложения. Это лишало возможности автономного перезапуска приложения, но как раз давало возможность не хранить ключ в явном виде (в файлах). При "скачивании" зачастую редко делается "дамп" оперативной памяти, на что и была сделана собственно ставка плюс к этому были подключены дополнительные системы мониторинга для ограничения доступа, контроля целостности. Таким образом базу данных можно было хранить хоть в открытом источнике (недовенренном датацентре), а пароль для запуска приложения был составным.
Быстродействие приложения конечно немного просела, но того требовали условия его использования. И да, шифровались только те данные, которые не участвовали в поиске / индексации.
Ответ написан
Комментировать
catanfa
@catanfa
Если с помощью шифрования вы хотитите защитить секреты (пароли к базе, ключи доступа к сторонним api, и т.д.), то существуют сервисы, специально для этого предназначенные, которые обеспечивают наивысший уровень безопасности (при аккуратном использовании)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы