Зашифрованные поля модели Django - PullRequest
4 голосов
/ 30 августа 2009

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

Ответы [ 6 ]

5 голосов
/ 25 января 2012

Это возможно с шифрованием с открытым ключом. Я делал нечто подобное раньше в PHP, но идея для приложения Django та же:

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

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

Когда они закончили, они деавторизовали свой сеанс.

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

Это все еще не совсем безопасно: если у вас есть root-доступ к машине, вы можете захватить ключ при его загрузке или просмотреть информацию о сеансе. Для этого можно было бы запустить программу чтения на компьютере клиента и получить доступ к базе данных через API.

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

4 голосов
/ 30 августа 2009

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

2 голосов
/ 21 мая 2010

Взгляните на Джанго-поля

1 голос
/ 15 марта 2014

Вы можете найти Зашифрованные поля Django полезными.

0 голосов
/ 26 мая 2014

Некоторые другие проблемы, которые следует учитывать, заключаются в том, что веб-приложение не сможет сортировать или легко запрашивать зашифрованные поля. Было бы полезно узнать, какие административные функции клиент хочет от вас. Другой подход заключается в создании отдельного канала приложения / доступа, который не отображает критические данные, но позволяет выполнять только функции администратора.

0 голосов
/ 01 сентября 2009

Вы и ваш клиент могли бы договориться о том, что они скрыты. Простая операция XOR или что-то подобное сделает значения не читаемыми в админе, и они могут быть декодированы как раз в то время, когда они необходимы на сайте.

Таким образом, вы можете безопасно управлять сайтом, не «случайно» читая что-либо.

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

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