gpt4 book ai didi

javascript - 简单的用户检查 meteor ,这安全吗?

转载 作者:可可西里 更新时间:2023-11-01 02:02:02 26 4
gpt4 key购买 nike

我有一个非常简单的应用程序,不需要任何 Angular 色,只需要一个或几个用户就可以登录和使用网站的管理员。

我正在我的管理模板中做一个简单的检查,如下所示:

<template name="admin">
{{#if currentUser}}
{{loginButtons}}
{{#if isUserAdmin}}
show some stuff here...
{{/if}}
{{ else }}
{{loginButtons}}
{{/if}}
</template>

然后在我的助手中我有:

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.
}
}

这足以保证应用程序的安全,还是我还需要其他东西?

最佳答案

这还不够。主要规则是:永远不要相信你的客户。客户端代码的任何部分都可以替换为任何其他代码 - 在您的情况下,可以修改 isUserAdmin 函数以始终返回 true。

为了安全起见,您需要在服务器端放置安全过滤器。

1) 为只允许管理员修改的数据设置写入/删除权限。参见 http://docs.meteor.com/#allow

2) 如果您有一些数据不应该对所有用户可见,而只对管理员可见(例如您的用户电子邮件、产品价格历史记录、未发表的文章等),请确保检查 中的权限>发布调用。例如:

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 字段标记特权用户会更好(也更容易在以后使用)。

这些步骤应该足以确保您的应用安全。

关于javascript - 简单的用户检查 meteor ,这安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com