Web应用程序:我应该将哪些内容发回给用户?

时间:2015-09-03 07:36:12

标签: javascript angularjs node.js rest

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

提供支持

问题的背景:

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

我对该策略的主要问题是,这意味着在获得令牌后,我需要在登录后保留令牌和ID,因为我正在构建一个Web前端,我将这些存储在localStorage中。

任何可能是恶意的用户都可以选择从该商店转储数据,并在浏览器的开发工具中查看他们可以更改的内容以获取其他人的数据!

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

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

1 个答案:

答案 0 :(得分:1)

  

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

真的?您应该根据拥有访问令牌的用户授权请求,因此,如果整个用户访问任何浏览器内的调试工具并获取令牌,那么该用户将无法做任何比UI更多的操作。

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

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