Какие механизмы безопасности есть у Meteor? [закрытый]
мы все знаем, что Meteor предлагает драйвер miniMongo, который легко позволяет клиенту получить доступ к постоянному слою (MongoDB).
Если какой-либо клиент может получить доступ к постоянному API, как защитить его приложение?
какие механизмы безопасности предоставляет Meteor и в каком контексте они должны использоваться?
4 ответа:
при создании приложения с помощью команды "Метеор", по умолчанию приложение включает в себя следующие пакеты:
- AUTOPUBLISH
- неуверенность
вместе они имитируют эффект каждого клиента, имеющего права на чтение/запись к базе данных сервера. Они являются полезными инструментами прототипирования (только для целей разработки), но обычно не подходят для производственных приложений. Когда вы будете готовы к выпуску продукции, просто удалите их пакеты.
чтобы добавить больше, Meteor поддерживает Facebook / Twitter / и многое другое пакеты для обработки аутентификации, и самым крутым является учетные записи-UI пакета
на коллекции doc говорит:
в настоящее время клиенту предоставляется полный доступ к коллекции. Они могут выполнять произвольные команды обновления Mongo. Как только мы построим аутентификация, вы сможете ограничить прямой доступ клиента чтобы вставить, обновить и удалить. Мы также рассматриваем валидаторы и другие ORM-подобные функции.
Если вы говорите об ограничении клиента не использовать любой из ваших несанкционированных API вставки / обновления / удаления, это возможно.
смотрите их, todo приложение на https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos
кроме того, теперь они добавили встроенный модуль AUTH, который позволяет вам войти и зарегистрироваться. Так что это безопасно. Насколько вы заботитесь о XSS, Valiations, заголовках клиентов и т. д.
но вы может ли anyday конвертировать приложение meteor в полностью работающее приложение nodejs путем развертывания на узле. Поэтому, если вы знаете, как защитить приложение nodejs, вы должны быть в состоянии защитить meteor.
по состоянию на 0.6.4, в режиме разработки, is_client и is_server блоки по-прежнему оба идут в клиентскую систему. Я не могу сказать, если они разделены, когда вы выключите режим развития.
однако, если это не так, хакер может получить представление о системе, просмотрев блоки кода if(Meteor.is_server). Это особенно касается меня, особенно потому, что я отметил, что я все еще на данный момент не могу разделить коллекции на отдельные файлы на клиенте и сервер.
обновление
Ну, дело в том, что не помещайте код, связанный с безопасностью, в блок is_server в несерверном каталоге (т. е.-убедитесь, что он находится в чем - то под /server .
Я хотел посмотреть, если я просто орехи о том, чтобы не быть в состоянии разделить клиент и серверные коллекции в клиентских и серверных каталогах. На самом деле нет никаких проблем с этим.
вот мой тест. Это простой пример модели публикации/подписки, которая кажется работать отлично. http://goo.gl/E1c56