Как обеспечить безопасность базы данных MySQL?

StackOverflow https://stackoverflow.com/questions/55643

  •  09-06-2019
  •  | 
  •  

Вопрос

Я собираюсь реализовать PHP/mySQL настройка для хранения информации о кредитной карте.

Кажется, что AES_ENCRYPT/AES_DECRYPT это путь,

но меня все еще смущает один момент:

Как обеспечить безопасность ключа шифрования?

Внедрение его в мои PHP-скрипты (которые будут находиться на том же сервере, что и база данных) кажется серьезной дырой в безопасности.

Каково здесь «лучшее решение»?

Это было полезно?

Решение

Вам следует долго и упорно думать о том, ДЕЙСТВИТЕЛЬНО ли вам нужно сохранять CC#.Если у вас нет веской причины, НЕ ДЕЛАЙТЕ!Каждую неделю вы слышите о взломе какой-то компании и краже CC#.Все эти компании допустили фатальную ошибку — они хранили слишком много информации.Сохраняйте CC# до тех пор, пока транзакция не будет очищена.После этого удалите его.

Что касается защиты сервера, лучший способ действий — защитить оборудование и использовать внутренний системный сокет для MySQL, а также обязательно заблокировать любой сетевой доступ к серверу MySQL.Убедитесь, что вы используете как системные разрешения, так и разрешения MySQL, чтобы обеспечить как можно меньший доступ.Для некоторых сценариев вы можете рассмотреть возможность аутентификации только для записи.На самом деле не существует надежного метода шифрования (поскольку вам всегда придется расшифровывать и, следовательно, хранить ключ).Это не значит, что вам не следует этого делать — вы можете хранить свой ключ в одном месте, и если вы обнаружите взлом системы, вы можете уничтожить файл и сделать данные бесполезными.

Другие советы

MySQL, есть шесть простых шагов, которые вы можете сделать, чтобы защитить ваши конфиденциальные данные.

Шаг 1:Удалите подстановочные знаки в таблицах грантов.

Шаг 2:Требовать использования надежных паролей

Примечание:Используйте опцию MySQL «--secure-auth», чтобы предотвратить использование старых, менее безопасных форматов паролей MySQL.

Шаг 3:Проверьте права доступа к файлам конфигурации

Шаг 4:Шифрование передачи клиент-сервер

Шаг 5:Отключить удаленный доступ

Шаг 6:Активно отслеживать журнал доступа MySQL.

Инструменты безопасности

Я согласен, но не ставьте копию, если вам это тоже не нужно.Но если он у вас действительно есть, убедитесь, что файл, в котором он есть, недоступен в Интернете.Вы можете написать двоичный файл, который будет возвращать ключ.Таким образом, он не сохраняется в виде открытого текста.Но если ваш сервер скомпрометирован, его все равно легко получить.

необходимая вам безопасность зависит от вашего приложения.например, если cc# будет использоваться только тогда, когда пользователь войдет в систему (сценарий типа тонкого интернет-магазина), то вы можете зашифровать cc# с помощью хэша обычного текстового пароля пользователя, соль пользователя и выделенная соль cc#.не сохраняйте это значение постоянно.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top