То, как вы защищаете свои данные, зависит от того, от каких атак вы хотите защищаться. Конечно, вы, вероятно, не знаете, как злоумышленник, скорее всего, скомпрометирует вашу систему, если только не существует определенных моделей угроз, от которых вы особенно пытаетесь защищаться, как, например, мошенник.
Злоумышленник может получить доступ к ОС, на которой работает веб-сервер. В этом случае шифрование на уровне файловой системы, вероятно, вам не поможет. На самом деле шифрование на уровне файловой системы, вероятно, является лишь полезной защитой от того, кто уходит с физического сервера (что является абсолютно допустимой моделью угроз). Однако, если файлы зашифрованы ключами, хранящимися в базе данных, злоумышленник, имеющий доступ к ОС веб-сервера, но не к базе данных, будет заблокирован.
Напротив, злоумышленник может получить доступ к базе данных, но не к ОС, через дыру в вашем приложении. Я ожидал бы, что это будет менее вероятно, так как современные операционные системы представляют огромные и хорошо изученные поверхности атаки.
Защитить данные вашего пользователя от злоумышленника с полным доступом к вашим серверам очень сложно. Вам необходимо зашифровать данные ключом, которого нет на ваших серверах. Это может быть что-то вроде пароля или ключа, хранящегося в файле cookie пользователя. Проблема всех этих схем заключается в том, что пользователям нельзя доверять такие важные данные, как эта, - они всегда хотят сбросить свой пароль, если они забудут. В большинстве случаев нереально защитить данные от злоумышленника с полным доступом к вашей ОС и базе данных.
Так что я бы выбрал то, от чего ты пытаешься защитить. Лично я ожидаю, что проникновение в ОС будет наиболее вероятным, и, таким образом, зашифровываю файлы ключами, которые хранятся в той части базы данных, которая каким-то образом защищена. Проблема здесь заключается в том, что операционная система должна хранить учетные данные для входа в базу данных (в settings.py
). Поэтому постарайтесь, чтобы эти файлы были максимально ограничены в ОС, т. Е. chmod 600
для учетной записи пользователя, которая делает как можно меньше.