保护流星/节点服务器的最佳实践

时间:2014-02-12 08:30:54

标签: javascript linux node.js security meteor

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

1 个答案:

答案 0 :(得分:4)

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

此外:

  • 不要忘记在Meteor应用程序(支持websockets)前使用SSL代理。
  • 确保您的数据库只能由您的meteor应用程序访问(防火墙IP限制)。
  • 如果您有任何Meteor方法,请确保检查运行它们的用户是否有权这样做,尤其是在更改数据库时。
  • 如果您使用非流星程序包进行身份验证/用户管理,请确保密码不以纯文本格式存储。
  • 在所有Meteor方法中使用check,发布函数和&你的允许和拒绝规则以确保数据类型及其结构得到执行,因此没有其他任何因素可以造成损害。使用audit-argument-checks包可以帮助您对此实施严格要求。
  • 确保您的Meteor服务器的时间正确。
  • 在服务器端,确保不使用var关键字在闭包内声明变量(因为变量可能会在用户之间跳转)。
  • 确保始终处理在服务器上找不到文档的情况(即不要执行collection.findOne(xx).yy(因为这可能会导致崩溃并显示信息,您应该先检查文档是否存在)。
  • 确保eval是不是在任何地方使用(我认为这应该是相当明显) - 自eval如全球范围的可变填充运行特别是随着流星,甚至从一个项目,可以在任何地方访问(这与仓库引擎系统的工作原理相悖)。
  • 永远不要将services(在用户集合中)发布到任何客户端,只发布没有设置resume的子部分。 (这有时通过第三方登录来完成,以向客户端公开更多用户信息,但它可能会显示太多)。

不确定是否有其他人,主要的是删除insecureautopublish个套餐以制定自己的规则。

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