我正在开发Web应用程序的服务器端和客户端,它几乎完成了。现在,是时候确保它了。
我阅读了很多文章和Q-A网站,以了解这个概念的原理。但是我的脑海中仍然存在问号。
这里有一个类似的问题: How do I secure REST API calls?
他们建议使用基于令牌的安全系统,这是非常常见和实用的方法。 Firebase,Auth0等服务也提供此安全系统。
这是关于"如何以及在何处存储令牌":https://auth0.com/docs/security/store-tokens
如果是这样,当我们将服务器存储在浏览器本地存储中时,令牌如何保护服务器免受虚假呼叫的侵害?
用一个例子解释它以便清楚: 我的客户端代码有一个带有选项的表单。其中一个选项可以通过下拉选项选择,只有" 1,2,3,4"在那些选项中。因此,客户端永远不能发送表格" 5"值到服务器。但是如果有人使用API工具(例如邮递员)发送值为5的表单呢?攻击者仍然可以为该请求添加令牌。首次以普通用户身份登录系统。然后打开浏览器的开发者控制台,复制您的令牌并粘贴到您的虚假请求的标题。
不允许跨源调用可以解决问题。但我不确定这是否意味着服务器和客户端应该在同一个域(或主机)上运行?
来自stackoverflow的奖金:Stackoverflow's use of localstorage for Authorization seems unsafe. Is this correct else how do we strengthen it?
他们也在从另一个方面讨论类似的问题。 (不是为了服务器安全,而是为了用户的安全。)
不相关但是在需要的情况下:前端是使用Angular 5开发的,服务器是使用Java和Spring Framework开发的。