CouchDB - Определение безопасности базы данных

CouchDB предлагает проверку перед тем, как разрешить вставку объекта / строки в базу данных. Это гарантирует, что если у вас есть общедоступное приложение для дивана, ваша база данных никем не будет заполнена мусором.

User <-> CouchDB

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

User -> Ruby -> MySQL
User <- Ruby <- MySQL

Как вы доверяете пользователю выполнять административные задачи, когда пользователю нельзя доверять?

Например, как бы вы сделали что-то вроде «проверки электронной почты» перед вставкой пользовательской строки, используя только couchDB? Вы не можете позволить пользовательскому агенту вставить строку - потому что они заполнили бы систему аккаунтами для спама. С другой стороны, нет и среднего уровня, который мог бы вставлять строку после того, как они щелкнули ссылку в электронном письме.

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

Затем node.js может отслеживать фид _changes и отправлять электронное письмо с активацией при создании нового запись в частной таблице (например, email_confirm ) (node.js будет служить доверенным промежуточным уровнем). Если пользователь щелкнет эту ссылку и вернется, то ... [unknown] ... и node.js наконец сможет создать запись в частной таблице пользователей ( user ).

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

В качестве дополнительной информации давайте представим обсуждение, построенное на couchdb, для которого любой может зарегистрироваться. Мы не хотим позволять кому-либо напрямую отправлять контент без какой-либо проверки - все же пользовательские агенты напрямую запускают систему . (Таблицы: Тема , Комментарий и Пользователь ). Как это будет работать?

6
задан Xeoncross 31 March 2011 в 17:55
поделиться