Где хранить ключ шифрования при использовании AES-шифрования с помощью PHP?

Я внедряю AES-256 бит в моем веб-приложении:

http://www.utoxin.name/2009/07/automatic-db-field-encryption-in-cakephp/

Один из шагов говорит, чтобы сохранить используемый шифр и ключ в файле boostrap. Но что мешает кому-то сканировать файловую систему с помощью PS или что-то еще и дешифровать данные?

Каков наилучший способ защитить данные?

Если у кого-то есть доступ ко всем файлам на жестком диске вашего сервера, все ставки отключены. Таким образом, вы не можете защитить свои данные, потому что ваш веб-порт еще должен иметь к нему доступ.

Это шифрование защитит вас только от злоумышленников, которые могут обращаться к базе данных, но не к файловой системе, например, через SQL-инъекцию. И даже в этом случае они могут читать данные: в зависимости от конкретной утечки webapp может с радостью расшифровать их для них!

(Я понимаю, что это древний вопрос, но, как автор связанного блога, я хотел добавить несколько комментариев)

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

Надеюсь, это поможет кому-то еще, кто споткнется через этот пост. У кого-то есть, так как я только что получил пару хитов в своем блоге из этого вопроса. 🙂

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