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

ABl*_*hip 6 javascript node.js express angularjs mean.io

我刚刚安装了MEAN堆栈(MongoDB,Express.js,AngularJS,Node.js)并打开了示例程序(在mean.io上找到),他们有一个基本的应用程序,你可以登录并创建博客"文章"只是为了测试等.

无论如何,我删除了'#!' 从URL中输出整个用户和文章模型,因为它们在数据库中.接缝好像这样做会让它停止通过Angular进行路由,而是使用只有JSON REST apis的Express路由.这是MEAN堆栈包中的一个缺陷,Angular整体上,还是仅仅是一个开发环境设置?我无法想象会发布这样一个巨大的缺陷,但也许我只是遗漏了一些东西......

可复制的步骤:

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

ini*_*nic 8

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

app.get('/articles', articles.all);
Run Code Online (Sandbox Code Playgroud)

app.get('/articles', auth.requiresLogin, articles.all);
Run Code Online (Sandbox Code Playgroud)

然后,如果您尝试直接点击url/articles,则会收到以下消息:

"用户未经授权"

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


Mat*_*ert 6

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

问题完全独立于Angular - 应用程序仅由/路径上的Node提供服务.然后Angular使用哈希值来显示正确的页面.

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

您可以向他们询问相关信息,因为可能会有人建立在示例之上并且不解决安全问题.