javascript - 网络应用程序 : What should I send back to the user?

标签 javascript angularjs node.js rest

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

问题背景:

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

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

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

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

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

最佳答案

Any user who might be malicious may choose to dump data from that store, and see what value they could change to get at other people's data, right in their browser's dev tools!

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

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

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

关于javascript - 网络应用程序 : What should I send back to the user?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369614/

相关文章:

javascript - Gatsby Markdown 图像卡在模糊的范围内

jquery - 如果函数返回 jQuery AJAX 输出作为返回

javascript - AngularJS 中 $interval 返回的 Promise 的参数是什么?

angularjs - 如何正确地将 Controller 和服务从 AngularJS 转换为使用 ng-resource

javascript - ECMAScript/Node : is it possible to save an object instance or context to the filesystem?

javascript - 查找多个数组中每个元素的所有组合

javascript - yii2 中每页来自 appasset.php 的单个 CSS

angularjs - 如何配置 karma-runner(也称为 testacular)以使用closure-library

node.js - Node JS 应用程序托管

javascript - socket.io "connect"刷新/重新加载事件不会触发