Какие механизмы безопасности имеют Метеор?

Мы все знаем, что Meteor предлагает драйвер miniMongo, который позволяет клиенту получить доступ к постоянному уровню (MongoDB).

Если какой-либо клиент может получить доступ к постоянному API, как защитить его приложение?

Каковы механизмы безопасности, которые предоставляет Meteor и в каком контексте они должны использоваться?

Ответ 1

Когда вы создаете приложение с использованием команды meteor, по умолчанию приложение включает в себя следующие пакеты:

  • AUTOPUBLISH
  • небезопасных

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

Чтобы добавить больше, Meteor поддерживает Facebook/Twitter/и многое другое для обработки аутентификации, а самым крутым является Аккаунты-UI

Ответ 2

В документе doc говорится:

В настоящее время клиенту предоставляется полный доступ к записи в коллекцию. Они могут выполнять произвольные команды обновления Mongo. Как только мы построим аутентификации, вы сможете ограничить прямой доступ клиента для вставки, обновления и удаления. Мы также рассматриваем валидаторы и другие ORM-подобные функции.

Ответ 3

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

Посмотрите их приложение todo в https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos

Кроме того, теперь они добавили встроенный модуль AUTH, который позволяет вам входить в систему и регистрироваться. Так что это безопасно. Насколько вы заботитесь о XSS, Отклонениях, заголовках клиентов и т.д.

но вы можете в любое время конвертировать приложение meteor в полностью работающее приложение nodejs, развернув его на node. Поэтому, если вы знаете, как защитить приложение nodejs, вы должны иметь возможность защитить метеор.

Ответ 4

Начиная с версии 0.6.4, в режиме разработки блоки is_client и is_server все еще идут в клиентскую систему. Я не могу сказать, если они отделяются при отключении режима разработки.

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

Update

Ну, дело не в том, что код безопасности, связанный с безопасностью, не помещается в блок is_server в несерверной директории (т.е. убедитесь, что он находится под чем-то под сервером.

Я хотел посмотреть, был ли я просто орешком в том, что вы не можете отделить коллекцию клиентов и серверов в каталогах клиентов и серверов. На самом деле с этим нет никаких проблем.

Вот мой тест. Это простой пример модели публикации/подписки, которая, кажется, работает нормально. http://goo.gl/E1c56