2009-08-30 2 views
4

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

ответ

4

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

+0

Я боялся этого. Думаю, я просто напишу чертовски хорошую политику конфиденциальности ... – OwenK

0

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

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

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

5

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

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

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

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

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

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

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

0

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

Смежные вопросы