【问题标题】:Angular JS security best practiceAngular JS 安全最佳实践
【发布时间】:2014-05-12 00:29:08
【问题描述】:

我开发了一个 Angular J'S 应用程序,它使用 Rest API 来访问它的数据。

我在服务器上有一个登录服务,它发回一个用于所有未来请求的令牌。没有令牌,没有数据。一旦令牌过期,服务器就会发送 403 状态代码,并向用户显示登录表单。

这很好用,但让我有点担心的是,第一次访问该网站的未经身份验证的用户会在 Angular 应用加载时收到每个模板/视图,然后再登录。

这对这个项目来说不是问题,但我的下一个项目是针对一家可能不希望他们的竞争对手嗅探应用程序并查看菜单等的企业,即使他们在没有有效帐户的情况下无法获得任何数据。

这只是所有单页应用程序的问题,还是它们可能是在加载所有模板文件和控制器文件之前在初始页面加载时检查登录的一种方式?

【问题讨论】:

  • 你说的“recieve”是什么意思 你的意思是他们你担心视图模板在用户认证之前被下载到浏览器?如果是这样,那么您的“单页”应用程序可能不适合您。还是您的意思是在登录信息填充数据之前,模板已“绘制/显示”给用户?

标签: javascript angularjs security rest


【解决方案1】:

我想我明白你在说什么。 Angular、使用视图等的问题在于,很多与访问控制没有太大关系,而是隐藏用户可以或可以'看不到。这仅仅是因为这些类型的 MV* 框架位于客户端。通常对此的解决方案似乎是在服务器上(私下)处理事情,然后仅在客户端有权访问这些资源时才将它们发送给客户端(例如,通过使用,例如您提到的令牌。)

如果您还没有研究过使用 Node.js,它可以很容易地处理这个问题(显然,Node.js 不是唯一的选择;任何其他服务器都可以做到这一点,但它会涉及到配置服务器。例如,对于 Apache,您可以使用 .htaccess 文件。)

无论如何,如果您将 Express 引擎与 Node.js 一起使用,它会使用公共文件夹为您的应用设置框架,该文件夹仅包含用户能够访问的静态内容(当我说静态内容时) ,我的意思是 .html、.css、.js 文件等)如果您不想向用户展示某些内容,除非他们有权查看,您可以从另一个位置提供该资源并简单地呈现它并将其发送到客户端。将 Jade 与 Node.js/Express 结合使用就是一个很好的例子。

【讨论】:

【解决方案2】:

我不确定这会成为问题的原因。 HTML 和 JavaScript 无论如何都不应该包含敏感信息。所有这些东西对任何想看它们的人都很容易获得。也许这会是公司 Intranet 的问题,但即便如此,菜单结构和其他类似元素对我来说也不是什么大问题。

如果出于某种原因,您需要切换您的送货方式。与其在客户端构建 HTML 模板,不如从服务器交付它们。所以切换到 PHP 单页应用程序(或其他一些服务器端语言)。

【讨论】:

  • 我大部分时间都同意,但是,例如,我们将很快为我们的一位客户建立一个客户服务门户,该门户将为他们的代理和他们的客户提供登录信息。 “代理区”中的导航结构可能很敏感。
猜你喜欢
  • 2010-09-28
  • 1970-01-01
  • 2013-06-19
  • 2014-01-17
  • 2011-01-26
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多