在Angular / MEAN.io中路由安全漏洞?

我刚刚安装了MEAN栈(MongoDB,Express.js,AngularJS,Node.js),并打开了示例程序(在mean.io上find),他们有一个基本的应用程序,您可以login并创build博客“articles”只是为了testing等。

无论如何,我删除了“#!” 从URL中输出整个用户和文章模型,就像它们在数据库中一样。 它接缝,好像这样做使它停止路由通过Angular,而是使用快速路由,这只是JSON REST apis。 这是MEAN堆栈包中的一个缺陷,Angular作为一个整体,还是只是一个开发环境设置? 我无法想象,这将是一个巨大的缺陷,但也许我只是失去了一些东西..

可复制的步骤:

  • 按照http://mean.io上的安装说明进行操作
  • 转到浏览器中的本地应用程序,并创build一个帐户和login
  • 创build一篇文章
  • 查看您刚刚创build的文章项目,并从URL中删除#!/,然后您可以看到已login的用户帐户的JSON对象以及散列的密码和salt以及文章对象。

正如你所说,删除#! 导致路由被服务器处理。 节点API然后转储响应中的用户对象。

这个问题是完全独立于Angular的 – 该应用程序仅由/ route上的Node服务。 Angular然后使用散列值来显示正确的页面。

这可能只是MEAN提供的例子的一个问题。 应用程序本身是不安全的,当他们谈论代码结构和设置的最佳实践,而不是快速演示。

你可以问问他们,因为可能会有人在这个例子的基础上构build,而不是解决安全问题。

它只是一个应用程序configuration。 如果您更改routes.js从:

 app.get('/articles', articles.all); 

 app.get('/articles', auth.requiresLogin, articles.all); 

然后,如果您尝试直接点击url/文章,则会显示以下消息:

“用户未被授权”

而不是JSON列出所有的文章。