【问题标题】:Routing security flaw in Angular/MEAN.io?Angular/MEAN.io 中的路由安全漏洞?
【发布时间】:2013-10-05 04:59:27
【问题描述】:

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

无论如何,我删除了“#!”从 URL 中输出整个用户和文章模型,就像它们在数据库中一样。似乎这样做使它停止通过 Angular 路由,而是使用只是 JSON REST api 的 Express 路由。这是 MEAN 堆栈包、整个 Angular 中的缺陷,还是只是开发环境设置的缺陷?我无法想象这会以这样的巨大缺陷发布,但也许我只是错过了一些东西..

可复制的步骤:

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

【问题讨论】:

  • 这是一个示例,不是生产就绪系统:"它旨在为您提供快速而有条理的方式来开始开发基于 MEAN 的 Web 应用程序,其中包含预先捆绑的有用模块,如猫鼬和护照并配置。”
  • 我在他们的 gh 问题页面上发表了评论,现在已修复

标签: javascript node.js angularjs express mean.io


【解决方案1】:

它只是一个应用配置。如果您将 routes.js 从以下位置更改:

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

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

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

“用户未被授权”

而不是 JSON 列出所有文章。

【讨论】:

    【解决方案2】:

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

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

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

    您可以询问他们,因为可能会有人在示例之上构建并且不修复安全问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多