Meteor/Node服务器安全最佳实践

3

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

1个回答

4

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

此外:

  • 不要忘记在Meteor应用程序前使用支持WebSockets的SSL代理。
  • 确保仅通过Meteor应用程序访问您的数据库(防火墙IP限制)。
  • 如果使用任何Meteor方法,请确保检查运行它们的用户是否有权限这样做,特别是当您更改数据库时。
  • 如果使用非Meteor身份验证/用户管理包,请确保密码不会以纯文本存储。
  • 在所有Meteor方法、发布函数和allow和deny规则中都使用check,以确保强制执行数据类型及其结构,使其他内容不能造成损坏。使用audit-argument-checks包也可以帮助您强制执行严格性。
  • 确保您的Meteor服务器时间正确。
  • 在服务器端,确保不使用var关键字在闭包内声明变量(因为变量可能在用户之间跳转)。
  • 确保始终处理在服务器上找不到文档的情况(即不要执行collection.findOne(xx).yy,因为这可能会崩溃并透露信息,应先检查文档是否存在)。
  • 确保任何地方都没有使用eval(我认为这一点足够明显了),特别是在Meteor中,因为像全局作用域变量这样的东西会在eval中运行,即使来自项目,也可以随时访问(这违反了仓库引擎系统的工作方式)。
  • 永远不要向任何客户端发布服务(在用户集合中),只发布其子集而不设置resume。 (有时使用第三方登录将更多用户信息公开给客户端,但可能会公开过多信息)。

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

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


为了补充你的第五点,最好的做法是添加audit-argument-checks包来强制使用check检查方法和发布参数。 - sbking
是的!我之前不知道那个包。我已经添加了它。 - Tarang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接