【问题标题】:Is it safe to use AngularJS? [closed]使用 AngularJS 安全吗? [关闭]
【发布时间】:2015-05-11 05:27:41
【问题描述】:

我一直在开发我的第一个 AngularJS 应用程序,我刚刚意识到任何人都可以简单地一次从我的 JSON 文件中获取/复制所有信息。所以我问:

  1. 使用 AngularJS 是安全的 - 即我应该担心
    人们一次复制我的应用程序的所有内容,然后简单地粘贴
    别的地方?
  2. 有没有办法让人们无法读取 JSON 文件?我确实知道有些工具和网站可能会使 Javascript 脚本不可读,但是当我将它传递给视图时,它会使浏览器无法读取 json。

有一个名为 Udemy 的网站,其中一部分使用了 Angular。我已经尽一切努力查看类标题,但我仍然无法找到/读取包含内容的 Json 文件。这怎么可能?

非常感谢。

【问题讨论】:

  • 您的“json 文件”?无论如何,客户能看到的,客户就能看到。甚至混淆也是可以破解的。你需要隐藏什么?
  • 这不是角度问题,所有 JavaScript 框架和现代 Web 开发本质上都是开放的,您可以使事情变得棘手、混淆等,但您无法在浏览器中实现受信任的平台。
  • 这是另一个关于 JSON 劫持的帖子 -> stackoverflow.com/questions/2669690/…
  • @DaveNewton 我并不是真的想隐藏,而是我正在创建一个练习外语的应用程序,我不希望用户作弊以获得答案。
  • 如果您的 JSON 文件存储在带有 .htaccessDeny from all 的目录中,这将阻止直接浏览器访问。通过对返回 JSON 数据的 PHP(或其他服务器语言)脚本的 AJAX 调用来获取它。

标签: javascript json angularjs


【解决方案1】:

您不应向用户发送任何不允许他们读取的数据,无论数据是否实际显示在他们的屏幕上。我假设您的数据来自服务器(可能从数据库中读取);即使使用 Angular.js,您也需要确保您的服务器只会发送特定用户有权查看的数据。 因此,您的问题的答案实际上与 Angular 无关,而是与您用来将数据提供给在用户浏览器中运行的 Angular 客户端的服务器端技术有关。

【讨论】:

    【解决方案2】:

    不,因为 AngularJS 是客户端,所以你发送的任何东西都对客户端可用。因此:

    1) 取决于您所说的安全。但是,是的,人们可以“阅读”您的应用中不在后端的所有内容。

    2) 不,如果您在 javascript 代码中使用它们,则不会。

    【讨论】:

    • 这个问题几乎不是问题,这也不是答案。
    • 对不起,我只是认为我应该与帖子的答案质量相匹配。但是感谢您的建设性反馈!我已经更新了“答案”以提供更多信息!
    • @m59 我不同意,这个问题确实不符合规范,但这个答案给出了一个简短但明确的答案。 1 回答是,2 回答否,以及一些简短但结论性的解释。
    • 嗯,编辑很快就不能正式算作修订,所以我不能删除我的反对意见,但如果你稍作改动,我会稍后再做。你确实错过了我的意思。这个问题几乎没有显示出对 javascript、思想或研究的任何理解。这个问题可能有 100 个重复项,其中一些具有一定的质量和细节(参见 Beast Mode Joe 的评论)。即使进行了编辑,这个和所有其他答案都非常薄弱。
    • @m59 哈哈,别担心,我不在乎投票;它们只是实际内容旁边的数字。但是感谢您指出野兽模式乔的评论,我不知道可能会有这样的更高级的答案。虽然它可能对 OP 没有用,但对于其他有更多背景的人来说,这很有趣!
    【解决方案3】:

    没有安全的方法可以同时提供内容和密钥,但阻止他们阅读。

    这就是 DRM 所做的,实际上是您正在寻找的。​​p>

    实际上,在您将内容和密钥都发送给客户端后,任何内容都不会被视为“安全”。

    如果他们有密钥和内容,他们当然可以想办法解密和阅读。

    【讨论】:

      【解决方案4】:

      首先,是的,使用 AngularJs 是安全的。 Angular 和任何客户端实用程序应该只关心处理它接收的数据的“视图逻辑”。该数据是服务器端“业务逻辑”的结果,它完全忽略了 Angular 的工作原理。

      我相信您仍然可以通过要求对您的数据进行身份验证来解决您的安全问题。要求用户登录并允许他们通过身份验证 cookie 或类似模型访问数据。您可以使用 MEANJS (meanjs.org) 开箱即用(或至少了解该过程)。

      提供给您网站的所有 JSON 数据都应该是您希望看到的数据。如果您担心人们可以简单地使用您的 JSON URL 在他们自己的服务器上聚合您的数据(假设他们通过了身份验证过程),那么我很遗憾地说有很多工具和精明的开发人员可以挑选这些数据关闭任何网站,无论它是通过 JSON、HTML、XML 等方式传递的。

      为了在客户端和服务器之间可靠地隐藏数据,您需要构建自己的 Web 应用程序(想想应用程序),该应用程序在两端都使用一种或多种加密方法。即使您尝试为标准 Web 浏览器构建自己的客户端加密/解密/双向握手,您也将不可避免地暴露嵌套在 Javascript 中的业务逻辑并完全破坏目的。

      【讨论】:

        猜你喜欢
        • 2019-06-28
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        • 2017-11-17
        相关资源
        最近更新 更多