Где хранить ключ для AES_ENCRYPT в MySQL? - PullRequest
3 голосов
/ 02 августа 2011

Я разрабатываю приложение для iPhone / iPod Touch, которое должно иметь доступ к базе данных MySQL. Я написал PHP API, который я могу вызвать из приложения iPhone.

В базе данных хранятся конфиденциальные данные, которые я хочу зашифровать. Я думаю, что я буду использовать AES_ENCRYPT. Моя проблема в том, где хранить ключ.
Было бы здорово, если бы вы знали, где хранить ключ для шифрования / дешифрования, чтобы его не могли увидеть другие лица, например, хакеры.

1 Ответ

3 голосов
/ 02 августа 2011

В целом:

  1. Не храните ключ в той части сервера, к которой веб-сервер имеет прямой доступ. Например, если ваш сайт в /var/www/home, не кладите туда свой ключ. Поместите его где-нибудь за пределами дерева веб-сервера.
  2. Убедитесь, что права доступа к папке, содержащей ваш ключ, установлены правильно. Ваше PHP-приложение должно иметь доступ только для чтения, а НЕ для записи или выполнения в этой папке (и файле ключа).
  3. Убедитесь, что на самом сервере установлен надежный пароль (длинный, много случайных чисел, букв и символов).
  4. Убедитесь, что сервер защищен правильно настроенным межсетевым экраном и постоянно обновляется самыми последними обновлениями безопасности.

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

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