【问题标题】:Web application : What should I send back to the user?Web 应用程序:我应该向用户发送什么?
【发布时间】:2015-09-03 15:42:05
【问题描述】:

我正在编写一个 Web 应用程序 - angularJS 在前端,REST API 和 mongodb 作为后端。由 node.js 提供支持。

问题背景:

我知道我需要使用基于令牌的身份验证来对我的用户进行身份验证,然后我需要让令牌可用于此后的每个新请求。我还需要能够保留用户 ID,以便以后在数据库上进行事务。

我对该策略的主要问题是,这意味着在取回令牌后,我需要在登录后保留令牌和 ID,并且因为我正在构建 Web 前端,所以我将它们存储在 localStorage 中。

任何可能怀有恶意的用户都可以选择从该存储中转储数据,并直接在浏览器的开发工具中查看他们可以更改哪些值来获取其他人的数据!

这必须是可以解决的问题,我知道你们中的一些人过去会解决这个问题。那么在这种情况下我们该怎么做呢?

也许有一种更安全的方法可以做到这一点?或者也许我根本不需要存储它们?

【问题讨论】:

    标签: javascript angularjs node.js rest


    【解决方案1】:

    任何可能怀有恶意的用户都可以选择从中转储数据 商店,看看他们可以改变什么价值来获得其他人的 数据,就在他们浏览器的开发工具中!

    真的吗?您应该根据拥有访问令牌的用户授权请求,因此,如果整个用户进入任何浏览器内调试工具并获取令牌,则该用户将只能从 UI 中执行任何操作。

    另一方面,您不需要持有用户 ID。一旦整个用户在您的系统中获得授权,该用户 ID 应该是访问令牌的一部分,并且只有服务器应该能够使用它。

    所谓的访问令牌可以作为加密词存储在 Web 浏览器 cookie 中,这比本地存储要好,因为 cookie 是作为常规或 AJAX 请求的任何 HTTP 请求的一部分发送的(即 您当您想要向 API 执行请求时,不需要手动包含令牌),并且在服务器授权过程中,您应该解密令牌并取回其信息(通常称为 声明 em>)。

    【讨论】:

    • 这正是我需要的信息!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多