Ответ 1
Это не достаточно. Основное правило: никогда не доверять своему клиенту. Любая часть клиентского кода может быть заменена на что-либо еще - в вашем случае функция isUserAdmin
может быть изменена для возврата всегда true.
Чтобы быть в безопасности, вам необходимо установить фильтры безопасности на стороне сервера.
1) Настройте разрешения на запись/удаление для данных, разрешенных только для админов. См. http://docs.meteor.com/#allow
2) Если у вас есть данные, которые не должны быть видимыми для всех пользователей, но только для администраторов (таких как ваши электронные письма пользователя, история цен на продукт, неопубликованные статьи и т.д.), обязательно проверьте привилегии в publish
вызов. Например:
Meteor.publish('unpublishedArticles', function() {
if(!this.userId) return null;
var user = Meteor.users.findOne(this.userId);
if(user.admin) return Articles.find({published: false});
return null;
});
Опять же, важно, чтобы данные были отфильтрованы в publish
, поскольку вызовы subscribe
можно легко подделать.
3) Кроме того, не разумно, чтобы ваша электронная почта была встроена непосредственно в код клиента. Это лучше (и проще использовать в будущем), чтобы отметить привилегированных пользователей с полем admin = true
.
Эти шаги должны быть достаточными для обеспечения безопасности вашего приложения.