Я смог выполнить это с использованием рамки MeteorJs. Мое решение не сексуально, но отлично работает.
Gist: https://gist.github.com/mariorodriguespt/b8c8a96ad2eccfb9b359
Я просто зашифровать данные перед сохранением в базу данных с помощью пакета коллекторно-крюки, и когда я публикую данные, которые я просто расшифровать его. Я делаю это только на сервере, поэтому я не посылаю ключ шифрования клиенту.
Это всего лишь эксперимент из моей личной лаборатории, для производства это кошмар для поддержания. Представьте себе каждый раз, когда вы хотите, чтобы чтение/запись данных ...
Лучших решений:
- Вы можете написать пакет, который оборачивает найти/обновить/удалить, чтобы сделать вашу жизнь намного проще.
- Вы можете использовать промежуточное программное обеспечение для обработки всего шифрования/дешифрования данных. (Я не знаю, как сделать это с Метеор, но я думаю, что это выполнимо)
реальной жизни:
Я никогда не получал проект с этим требованием. Если кто-то использует ваше веб-приложение и удаляет все данные, злоумышленник получает данные, дешифрованные. Это может помешать злоумышленнику получить базу данных, если он использует непосредственно сервер базы данных.
Работа с зашифрованной базой данных является кошмаром сама по себе, на самом деле легко тратить время на это. Также представьте, что какой-то бедный парень пытается оптимизировать дизайн схемы базы данных.
Я рекомендую вам разработать приложение без шифрования, и когда вы будете готовы к запуску, просто добавьте уровень шифрования. Решение 1 отлично работает, на мой взгляд. Не забывайте писать руководства по миграции, вы будете нуждаться в них :)