jef*_*lte 12 javascript meteor
我有一个非常简单的应用程序,只需要一个或多个用户就可以登录和使用网站的管理员.
我正在我的管理模板中进行简单的检查,如下所示:
<template name="admin">
{{#if currentUser}}
{{loginButtons}}
{{#if isUserAdmin}}
show some stuff here...
{{/if}}
{{ else }}
{{loginButtons}}
{{/if}}
</template>
Run Code Online (Sandbox Code Playgroud)
然后在我的帮助下,我有:
Template.admin.isUserAdmin = function(){
var adminEmail = Meteor.user().emails[0].address;
if( adminEmail === "username@gmail.com"){
return true;
} else {
return false;
//add some logic for displaying error template.
}
}
Run Code Online (Sandbox Code Playgroud)
这足以让应用程序保持安全,还是我还需要其他东西?
Hub*_* OG 20
这还不够.主要规则是:永远不要相信您的客户.客户端代码的任何部分都可以替换其他任何东西 - 在您的情况下,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;
});
Run Code Online (Sandbox Code Playgroud)
同样,重要的是数据被过滤,publish因为subscribe呼叫很容易被篡改.
3)此外,将您的电子邮件直接嵌入客户端代码中并不明智.使用admin = true字段标记特权用户会更好(并且更容易在路上使用).
这些步骤应足以确保您的应用安全.
| 归档时间: |
|
| 查看次数: |
9703 次 |
| 最近记录: |