security - Meteor - 检查用户是否以管理员身份登录(客户端)

标签 security node.js meteor administrator

我目前正在开发一个需要用户和管理员的应用程序。我现在要做的是,在客户端上创建一个管理员帐户,用户名为“admin”,默认密码应通过帐户用户界面进行更改。

我这样做是因为创建这样的用户:

Accounts.createUser({
    username    : 'admin',
    email       : 'test@test.com',
    password    : 'changethispasswordovertheuserinterface',
    profile     : { type : 'admin' }
});

在服务器端对我不起作用。这意味着我只需在 client.js 中创建管理员,然后使用此代码来检查管理员是否已登录。

Template.admin.isAdmin = function () {
    var currentUser = Meteor.user();
    // Is this hackable?
    if (null !== currentUser) {
        if ('admin' === currentUser.username) {
            return true;
        }
    }
};

这是解决这个问题的最佳方法吗?最重要的是,我的网站是否可以像这样被黑客攻击(有人可以伪造它)吗?

最佳答案

是的,这是可破解的,人们可以拉出 chrome 检查器并很容易地修改它。或者甚至更快,通过输入类似 Template.admin.isAdmin = function () { return true; 的内容。 } 进入 Chrome 的网络控制台

最好的方法是仅当用户是管理员时才从服务器端向客户端提供信息。因此,这意味着如果从客户端执行操作,则使用 Meteor.allow 来确保数据库只能由管理用户更改。

这还取决于您想使用“isAdmin”来做什么。如果是内容,您可以在服务器端生成 html 并将其通过 Meteor.methods 发送到客户端。目前,模板系统不提供根据用户文档包含的内容锁定客户端 UI 的功能。

对于任何管理命令,您可以使用 Meteor.call,此时用户将在服务器上进行审查,并在服务器上执行事务。

关于security - Meteor - 检查用户是否以管理员身份登录(客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682924/

相关文章:

security - DotNetNuke 漏洞

linux - 如何在 Linux 上定义要求用户使用注册设备登录的其他安全级别?

iphone - 删除使用 KeychainItemWrapper iphone-sdk 存储的用户名/密码

javascript - 使用 DiscordJS 在聊天中获取表情符号图像的最佳方法是什么?

c# - 有什么办法可以签署 XDocument 吗?

node.js - 将 HDR 照片从 iPhone 上传到网络 - GPS 数据丢失

javascript - Node js .10 fs.createReadStream streams2 结束事件未触发

javascript - JS - 将字符串传递给 MongoDB 查询

meteor - meteor Accounts.changePassword的错误格式不一致

meteor - 如何使用Iron Router返回404