Meteor-保护表单和存储敏感数据的最佳流程是什么
我正在用Meteor构建我的第一个应用程序,我想知道在几种情况下应该采取的最佳安全措施Meteor-保护表单和存储敏感数据的最佳流程是什么,meteor,Meteor,我正在用Meteor构建我的第一个应用程序,我想知道在几种情况下应该采取的最佳安全措施 如何确保用户不向我的表单提交drop table之类的命令?我必须以某种方式手动消毒还是自动处理 通常情况下,如果它要求用户提供敏感信息,我会使用GET-on表单,但是我不清楚Meteor如何处理向db插入项目的问题。通过表单提交的信息是安全的还是被传递到人们可以接收的地方 如果我删除了自动发布和不安全的包,这意味着用户不能只查询其他用户信息,对吗 对不起,如果这些是noob问题。我还没有完全了解应用程序的安
对不起,如果这些是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应用程序安全的基本知识:
包
自动发布
程序包以下是对您的问题的一些回答:
postsInsert
的方法。除非使用SSL,否则消息将以明文形式在客户端和服务器之间传递autopublish
后,您需要指定将哪些文档发布到客户端-否则客户端将无法读取任何文档我建议看任何有关安全的流星视频。这篇演讲特别有帮助。谢谢你的全面回复,这个和另一个答案真的帮助我了解如何保护我的应用程序。谢谢你的回复。这回答了我的问题,肯定会帮助我保护我的应用程序。