2013-09-29 140 views
6

我刚刚安装了MEAN堆栈(MongoDB,Express.js,AngularJS,Node.js)并打开了示例程序(如在mean.io上找到的),并且它们有一个基本应用程序,您可以登录并创建博客“文章“只是为了测试等。在Angular/MEAN.io中路由安全漏洞?

无论如何,我删除了'#!'从URL中输出,并输出数据库中的整个用户和文章模型。它会像接通Angular时那样接缝,而不是使用Express路由,这只是JSON REST apis。这是MEAN堆栈包中的一个缺陷,Angular作为一个整体,还是只是一个开发环境设置?我无法想象,这将与这样的一个巨大的缺陷被释放,但也许我只是失去了一些东西..

Replicateable步骤:

  • http://mean.io
  • 转到按照安装说明进行本地应用程序在浏览器中创建一个帐户和登录
  • 创建文章
  • 查看刚刚创建的商品条目,并删除#!/从URL,你再看到登录的用户帐户 您的JSON对象完成哈希密码和盐,以及文章 对象。
+1

这是一个例子,而不是生产就绪系统:*“它旨在让您快速有组织地开始开发基于MEAN的网络应用程序,其中包含预先捆绑和配置的有用模块,例如猫鼬和护照。”* – WiredPrairie

+1

I在他们的gh问题页面上发表了评论,并且现在修复了它 – ShrekOverflow

回答

6

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

该问题与Angular完全独立 - 该应用仅由/路由的节点提供服务。 Angular然后使用散列值显示正确的页面。

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

您可以向他们询问一下,因为可能会有人在示例的基础上构建而不解决安全问题。

8

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

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

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

然后,如果你试图打网址/文章直接与你得到的消息:

“用户无权”

而不是JSON列出所有文章。