Javascript 在浏览器控制台上为未经身份验证的用户禁用Meteor Router.routes
我正在开发一个使用Iron路由器的Meteor应用程序。我们的应用程序中有一个登录页面。即使用户未登录,如果我在开发人员控制台上以未经身份验证的用户身份调用以下代码:Javascript 在浏览器控制台上为未经身份验证的用户禁用Meteor Router.routes,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我正在开发一个使用Iron路由器的Meteor应用程序。我们的应用程序中有一个登录页面。即使用户未登录,如果我在开发人员控制台上以未经身份验证的用户身份调用以下代码: Router.routes 它给出了所有的路由和相应的路径。有没有办法禁用对这些路径的访问,或者我需要在服务器代码中推送这些端点?您在客户端上定义的所有内容都在客户端上可见。所有路由定义和路由逻辑也是如此。在生产代码中,这将是模糊的,但它仍然存在 如果你担心,客户可以阅读你的路线,那么你应该更关心它与你有关的事实。听起来有点混乱
Router.routes
它给出了所有的路由和相应的路径。有没有办法禁用对这些路径的访问,或者我需要在服务器代码中推送这些端点?您在客户端上定义的所有内容都在客户端上可见。所有路由定义和路由逻辑也是如此。在生产代码中,这将是模糊的,但它仍然存在 如果你担心,客户可以阅读你的路线,那么你应该更关心它与你有关的事实。听起来有点混乱,但关键是:您应该仔细检查通过发布发布到客户端的每个数据,或者通过服务器上的方法操作/创建的每个数据。如果您的后端尽可能健壮和安全(100%永远不可能),那么您就不需要关心客户端是否可以看到存在哪些路由并访问它们 一个例子: Bob找到路由
/admin
,如果他不是管理员,则禁用路由器的触发器以重定向他
现在Bob可以看到管理员可以看到的所有数据。为了防止出现这种情况,您可以在出版物中签入如果Bob在上具有“admin”角色,则不要向他发布,如果他不是admin
Ada也找到了这种方式进入管理面板,并希望创建一个新用户。因为用于创建新用户的服务器方法是一种检查Ava是否具有“管理员”角色的validatedMethod
,它将无法创建新用户,因为Ava不是管理员
结论:
阻止客户端访问只是UI Magic bot根本不安全。不过,服务器端的简单调整将帮助您更好地睡眠
更多帮助:
一个好的入门方法是阅读Meteor安全指南:
最后还有一个安全检查表,出于完整性和SEO原因,我在这里引用了该检查表:
确保你的应用没有不安全或自动发布的软件包
验证所有方法和发布参数,并包括审核参数检查以自动进行检查
拒绝写入用户文档上的配置文件字段
使用方法,而不是客户端插入/更新/删除和允许/拒绝
在出版物中使用特定的选择器和筛选字段
不要在Blaze中使用原始HTML包含,除非您真的知道自己在做什么
确保源代码中没有机密API密钥和密码
保护数据,而不是用户界面-从客户端路由重定向对安全没有任何作用,它只是一个很好的用户体验功能
永远不要信任从客户端传递的用户ID。在方法和发布中使用this.userId
设置浏览器策略,但要知道并不是所有浏览器都支持它,所以它只是为使用现代浏览器的用户提供了一个额外的安全层
浏览器
答案中提到的有用软件包: