【问题标题】:Best Practices for Securing a Meteor/Node Server [closed]保护 Meteor/Node 服务器的最佳实践 [关闭]
【发布时间】:2014-02-12 23:31:26
【问题描述】:

假设我们已经处理了 CSRF 攻击、进行了适当的用户输入验证、删除了 auto-publishinsecure 包,那么保护 Meteor.js 应用程序的最佳实践是什么?

【问题讨论】:

    标签: javascript linux node.js security meteor


    【解决方案1】:

    您似乎已经完成了大部分工作。

    另外:

    • 不要忘记在 Meteor 应用程序(支持 websockets)前使用 SSL 代理。
    • 确保您的数据库只能由您的流星应用程序访问(防火墙 ip 限制)。
    • 如果您有任何 Meteor 方法,请确保检查运行它们的用户是否有权这样做,尤其是在您更改数据库时。
    • 如果您使用非流星软件包进行身份验证/用户管理,请确保密码不是以纯文本形式存储的。
    • 在所有 Meteor 方法、发布函数以及允许和拒绝规则中使用 check,以确保强制执行数据类型及其结构,以免其他任何事情造成损害。使用audit-argument-checks 包也可以帮助您严格执行此操作。
    • 确保 Meteor 服务器的时间正确。
    • 在您的服务器端,确保不要在没有使用 var 关键字的情况下在闭包内声明变量(因为变量可能会在用户之间跳转)。
    • 确保您始终处理在服务器上找不到文档的情况(即不要这样做collection.findOne(xx).yy(因为这可能会崩溃并泄露信息,您应该先检查文档是否存在)。
    • 确保eval 不在任何地方使用(我认为这一点应该很明显) - 特别是对于meteor,因为在eval 中运行的东西,例如全局范围的变量,即使来自项目,也可以在任何地方访问(这与仓库引擎系统的工作方式背道而驰)。
    • 永远不要将services(在用户集合中)发布给任何客户端,只发布没有resume 集的子部分。 (这有时是通过 3rd 方登录来完成的,以便向客户端公开更多用户信息,但它可能会泄露太多信息。

    不确定其他的,主要是删除 insecureautopublish 包以制定自己的规则。

    抱歉,这看起来不太好,我不知道如何在每个项目下方放置一个空格。

    【讨论】:

    • 要补充您的第 5 点,最好添加 audit-argument-checks 包以使用 check on 方法强制执行并发布参数。
    • 是的!我不知道那个包裹。我已经添加到了
    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2010-09-20
    • 2020-06-04
    • 2017-11-16
    相关资源
    最近更新 更多