我正在使用Meteor构建我的第一个应用程序,我想了解在几种情况下采取的最佳安全措施......
如何确保用户不会将drop table等命令提交给我的表单?我是否必须以某种方式手动消毒或自动处理?
通常我会在表单上使用GET,如果它要求用户提供敏感信息,但是我很困惑Meteor如何处理将项目插入数据库.通过表单提交的信息是安全的还是通过人们可以通过的地方传递?
如果我删除了自动发布和不安全的包,则意味着用户不能只查询其他用户信息,这是正确的吗?
对不起,如果这些是noob问题.我还没有完全理解应用程序的安全性如何适合,但任何帮助将非常感激:)
以下是保护流星应用程序基础知识的快速概述:
通过HTTPS传输所有内容.
将客户端和服务器代码分隔到自己的目录中.保持服务器端机密安全的一个好方法是首先不要将它们发送到客户端.
取下insecure包裹.
取下autopublish包裹.
添加audit-argument-checks包并将检查添加到所有方法和发布函数.
添加browser-policy包(完成上述所有操作后).
以下是您的问题的一些答案:
如果删除了insecure并且您没有任何允许规则,则用户无法删除任何内容.无论如何,客户端上的文档只能通过id删除或更新,因此您不能使用单个命令删除集合.
通过指定适当的允许规则,客户端可以执行插入/更新.否则,您可以使用meteor方法让服务器为您执行插入/更新.例如,您可以指定postsInsert服务器上的方法.除非您使用SSL,否则消息将以明文形式在客户端和服务器之间传递.
正确.随着autopublish关,你需要指定哪些文件发布到客户端-否则客户端将无法读过的任何文件访问.