Это большой вопрос, потому что он показывает, как работает модель метеорной безопасности.
Здесь нет проблем с безопасностью, потому что Meteor никогда не доверяет клиентскому коду.
В Meteor, только сервер решает, к каким данным у каждого клиента есть доступ (см. Meteor.publish ) и какие данные может изменять каждый клиент (см. Meteor.allow ) , Когда клиент аутентифицируется на сервере, сервер сохраняет идентификатор пользователя. До тех пор, пока клиент не выйдет из системы, он предоставит этот идентификатор вашим Meteor.publish
и Meteor.allow
функциям на сервере как userId
.
Meteor также отправляет идентификатор пользователя на клиенте, потому что, конечно, вы хотите изменить поведение клиента и то, что отображается на экране, в зависимости от того, кто вошел в систему. И, как вы говорите, мы не можем остановить мошеннического клиента от произвольного изменения любого его кода JavaScript, чтобы изменить то, что он считает идентификатором пользователя! Но выполнение этого не дает клиенту никаких новых разрешений, потому что только код сервера принимает решения по безопасности.
Вы можете попробовать это с помощью приложения безопасных вечеринок:
$ meteor create --example parties
Meteor.userId()
, чтобы получить идентификатор пользователя. Meteor.userId()
новой функцией, которая возвращает желаемый идентификатор. Итак, теперь вы подделали клиента, чтобы он думал, что это ваш пользователь. Но сервер знает лучше. На экране все еще не будет вечеринки, и вы не можете обновить коллекцию вечеринок, чтобы изменить информацию о вечеринке.
Фактически, совершенно безопасно установить идентификатор пользователя клиента на что угодно! Вы можете войти прямо в систему учетных записей и позвонить Meteor.default_connection.setUserId("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
. Попробуйте, и вы увидите, что кнопка входа в правом верхнем углу превращается в анимацию. Это потому, что клиент звонит Meteor.user()
, чтобы показать адрес электронной почты зарегистрированного пользователя, которого вы только что установили. Но поскольку вы не вошли на сервер как этот пользователь, он не публикует никакой информации об этом пользователе, и вы просто получаете спинниг.
Это очень сильная модель безопасности. Вам не нужно беспокоиться о каком-либо клиентском коде, хотя в большинстве приложений именно там живет большая часть кода! Пока вы пишете безопасные методы сервера, публикуете функции и разрешаете / запрещаете правила, вы полностью заблокированы независимо от того, что пытается сделать клиент.
Раньше я не использовал Plastic SCM, но раньше Subversion у меня работала очень хорошо. Если вы не привязаны к бесплатному решению, например SVN, вы можете подумать о Team Foundation Server. Помимо контроля версий, TFS предлагает дополнительные приятные функции, такие как отслеживание рабочих элементов, интегрированная отчетность ... Как вы понимаете, интеграция с Visual Studio просто великолепна :)
Использование VisualSVNServer - это простой способ запустить Subversion в среде Windows, и у них есть инструмент, который предлагает интеграцию с Visual Studio примерно по цене 50 долларов за разработку. Когда я работал в компании, находящейся в процессе перехода, выбор стоял между SVN и Perforce. В итоге мы остановились на SVN, потому что я очень легко смог получить, использовать, протестировать, поиграть с ним. Мы могли получать презентации Perforce на WebEx, но было трудно изучить их, не купив их книгу. Также я утверждал, что это лучший инструмент для разработчиков, потому что на нем было очень много проектов с открытым исходным кодом, и это был более передаваемый навык. Пластиковый SCM вряд ли будет использован, если вы перейдете на другую должность.
Я заранее прошу прощения за свое предложение, но вы можете использовать распределенную систему контроля версий централизованно. Это всего лишь вопрос политики внутри вашей команды разработчиков.
Например, Mercurial позволяет очень легко извлекать и отправлять запросы через веб-службу через TortoiseHG.
Или, может быть, вы можете попробовать смешанное решение, централизованный (подрывной) сервер и локальное ветвление для каждого разработчика, использующего git, что, я должен сказать, очень просто.
Для Subversion <-> VStudio я использовал Ankh и считаю его очень простым в использовании. Для Git <-> VStudio я использовал GitExtensions, и интеграция не так хороша, как можно найти, например, с расширением Tortoise Shell или с Ankh, но вы можете попробовать сами.
Другой альтернативой VSS является SourceGear Vault ('vss done right'). Большой плюс в том, что он работает (в отличие от VSS).
PlasticSCM кажется распределенным решением, тогда как svn (и VSS, TFS, ...) централизованы. Если вам нужны альтернативы для коммерческих распределенных решений, вы можете взглянуть на git , mercurial , bazaar .
Я хочу добавить этот ответ, чтобы все могли сделать свой выбор.
Я разрабатываю на C # с VS2008. Я работаю в команде из двух разработчиков. Раньше у нас не было контроля версий (ужас), затем мы использовали Subversion (хорошо), а затем мы перешли на Plastic SCM (хорошо).
Моя матрица сравнения:
(обратите внимание на мою точку зрения пользователя Windows, YMMV)
Pro Plastic:
Contra Plastic:
Pro Subversion:
Contra Subversion:
Надеюсь, что это поможет. Если вам нужна другая конкретная информация, дайте мне знать.
Феликс
Взгляните на производительность здесь. Он сравнивает обе системы при действительно большой нагрузке (1, 10, 20, 50 и, наконец, 100 одновременно работающих машин против одного сервера, что наверняка намного больше, чем 100 реальных пользователей).