Можно ли использовать фильтрованную репликацию CouchDB для репликации только подмножества данных, переданных пользователю в ACL?
Вопрос
В частности, можно ли выполнить фильтрованную репликацию с помощью PouchDB?Я хочу быть уверен, что клиент не сможет пропустить фильтр и, таким образом, синхронизироваться со всей базой данных.
Решение
Там нет репликации CouchDB «протокол». Процесс репликации - это просто клиент, подключающийся к двум конечным точкам CouchDB, чтением документов из одного и написанием их в другую.Конечно, CouchDB имеет встроенный такой клиент («репликатор»).но концептуально это стороннее приложение.
Это означает, что вы можете исключить репликацию из анализа безопасности вашего приложения.Сначала рассмотрим обычные веб-клиенты, читающие и записывающие данные на ваш сервер.Запри это.Вы можете предположить, что гипотетический злоумышленник имеет взломанный веб-браузер или использует собственный HTTP-клиент (который, например, не соблюдает политики перекрестного происхождения).
После решения этой проблемы репликация по необходимости будет следовать вашей политике безопасности.
Другими словами, репликация между PouchDB и CouchDB:
- Если ты толкая на удаленный сервер, вашим инструментом безопасности является удаленный
validate_doc_update
функция. - Если ты тянет с удаленного сервера вашим инструментом безопасности является объект базы данных _security, а именно:
"members"
массивы.Клиент может либо читать базу данных целиком, либо не читать вообще.Конечно, вы можете выполнять фильтрованную репликацию в специальные базы данных на стороне сервера.