我有这个消息集合,其中包含多个消息对象,每个消息对象都带有唯一ID。现在用户X只能访问ID的消息对象,比如123456.现在用户X是否可以打开开发人员工具,更改JS文件并从147852读取消息?
就像用户登录时一样,我检查我的用户集合并获取相应的ID并将其分配给名为msgID
的变量。然后我
message = Meteor.Collection('messages').id(msgID);
这样做以获取消息。用户是否可以将该消息ID更改为104758之类的静态内容,并阅读他/她未获得许可的消息?
如果这就像一个简单的问题,我很抱歉,但我对这个流星的东西和Stack Overflow都很新。
答案 0 :(得分:1)
默认情况下,新的Meteor项目包括包autopublish
和insecure
,它们为每个客户端提供对数据库的完全读/写访问权限。这对于原型设计可能很有用,但对于真正的应用程序来说显然是个坏主意,因此您应该使用$ meteor remove autopublish insecure
删除它们。此时,客户端根本无法访问。您必须使用publish/subscribe(用于读取访问权限)以及allow/deny rules或methods(用于写访问权限)添加访问权限。
请参阅documentation。
中的相关部分在服务器上运行发布,允许/拒绝规则和方法。客户端可能会使用他们自己的Javascript版本,但这只会影响其客户端上运行的代码。在服务器或其他客户端上运行的代码不受此影响。 回答你的问题:
autopublish
和insecure
并授权客户端访问,那么这不安全,因为用户可以更改自己客户端的Javascript代码以绕过客户端授权autopublish
和insecure
,并且有正确的书面出版物,允许/拒绝规则和/或方法,那么您没事。客户端只能通过此界面进行读写。