Meteor-保护表单和存储敏感数据的最佳流程是什么

Meteor-保护表单和存储敏感数据的最佳流程是什么,meteor,Meteor,我正在用Meteor构建我的第一个应用程序,我想知道在几种情况下应该采取的最佳安全措施 如何确保用户不向我的表单提交drop table之类的命令?我必须以某种方式手动消毒还是自动处理 通常情况下,如果它要求用户提供敏感信息,我会使用GET-on表单,但是我不清楚Meteor如何处理向db插入项目的问题。通过表单提交的信息是安全的还是被传递到人们可以接收的地方 如果我删除了自动发布和不安全的包,这意味着用户不能只查询其他用户信息,对吗 对不起,如果这些是noob问题。我还没有完全了解应用程序的安

我正在用Meteor构建我的第一个应用程序,我想知道在几种情况下应该采取的最佳安全措施

  • 如何确保用户不向我的表单提交drop table之类的命令?我必须以某种方式手动消毒还是自动处理

  • 通常情况下,如果它要求用户提供敏感信息,我会使用GET-on表单,但是我不清楚Meteor如何处理向db插入项目的问题。通过表单提交的信息是安全的还是被传递到人们可以接收的地方

  • 如果我删除了自动发布和不安全的包,这意味着用户不能只查询其他用户信息,对吗


  • 对不起,如果这些是noob问题。我还没有完全了解应用程序的安全性是如何适应的,但我非常感谢您的帮助:)

    如果您不希望您的用户执行某些操作,您就不允许他们这样做。用户能够在数据库上执行的唯一命令是您指定的命令:当您删除不安全的包时,键入Collection.remove({});在浏览器控制台中,不会删除整个集合,用户必须调用Meteor.call某些允许的操作(通过Meteor.methods)来执行仅经过身份验证的内容

    通常,您希望资源的所有者能够编辑/删除它,但其他人不应该能够修改它。 如果你有一个收藏的编辑表单,你可能会有相应的Meteor.methods来编辑/删除它。 在Meteor.method中,您可以检查从客户端接收到的传递参数以验证数据的正确性,还可以验证调用是否由允许的用户(通常是文档的所有者)发出。 希望Meteor附带一个匹配框架来测试发送给Meteor.methods的参数

    // define a test to check if a document is editable by a certain user
    EditableDocument=function(userId){
        return Match.Where(function(documentId){
            var document=Collection.findOne(documentId);
            if(!document){
                throw new Meteor.Error(500,"Document doesn't exist !");
            }
            if(userId!=document.creator._id){
                throw new Meteor.Error(500,"Can't update a document you don't own.");
            }
            return true;
        });
    };
    
    Meteor.methods({
        updateCollection:function(documentId,fields){
            check(documentId,EditableDocument(this.userId));
            check(fields,{
                field1:Match.Optional(String),
                field2:Match.OneOf(Number,Boolean),
                field3:Match.Any
            });
            // if the tests pass, do your thing
            ...
        }
    });
    
    为了在客户端和服务器之间传递表单数据,Meteor使用DDP(数据分布式协议)和一种称为远程方法调用的技术。 客户端可以调用服务器中声明的Meteor.method并异步获得响应。 这不同于使用HTTP完成的经典表单提交操作技术,可以使用其安全对应的HTTPS在客户端和服务器之间加密数据,避免数据嗅探问题。 DDP支持数据加密,每个*.meteor.com托管站点都使用meteor.com证书,以确保所有流量都使用SSL正确加密。 在您自己的托管解决方案中,您必须自己处理此问题

    删除autopublish后,每个服务器资源将不再发布到所有客户端,这意味着不能仅查询您的集合以获得其他用户对文档的访问


    请务必至少阅读一次文档,以全面了解web开发中与Meteor相关的方面。

    以下是保护Meteor应用程序安全的基本知识:

  • 通过HTTPS传输所有内容

  • 将客户端和服务器代码分离到各自的目录中。确保服务器端机密安全的一个好方法是,一开始决不要将它们发送给客户端

  • 删除不安全的

  • 删除
    自动发布
    程序包

  • 添加包并添加到所有方法和发布函数

  • 添加包(完成上述所有操作后)


  • 以下是对您的问题的一些回答:

  • 如果不安全被删除,并且您没有任何规则,那么用户不能删除任何内容。无论如何,客户端上的文档只能通过id删除或更新,因此不能使用单个命令删除集合

  • 通过指定适当的允许规则,客户机可以执行插入/更新。否则,您可以使用meteor方法让服务器为您执行插入/更新。e、 g.您可以在服务器上指定类似于
    postsInsert
    的方法。除非使用SSL,否则消息将以明文形式在客户端和服务器之间传递

  • 对。关闭
    autopublish
    后,您需要指定将哪些文档发布到客户端-否则客户端将无法读取任何文档


  • 我建议看任何有关安全的流星视频。这篇演讲特别有帮助。谢谢你的全面回复,这个和另一个答案真的帮助我了解如何保护我的应用程序。谢谢你的回复。这回答了我的问题,肯定会帮助我保护我的应用程序。