我有一个带有ASP.NET Core Web API的SPA Angular 5应用程序作为后端的纯Web API(它们可以托管在不同的服务器/域中)。在线搜索和阅读后,我知道我们可以将令牌存储在localstorage或httponly cookie中,但这两种方法都有自己的漏洞(本地存储容易受到XSS的影响,cookie很容易受到CSRF的攻击)。
所以我想知道:
感谢。
答案 0 :(得分:0)
JWT类似于UserID和密码,您不应该使用localStorage来处理敏感数据。阅读这篇好文章和这个youtube vidio:
https://dev.to/rdegges/please-stop-using-local-storage-1i04和 https://medium.com/spektrakel-blog/local-storage-is-not-a-secure-place-9542cbfa904a 使用各种技术可以避免XSRF / CSRF,阅读OWASP
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
一种常见的方法是(Double Submit Cookie),是使用在每个req的http / s头中添加的xsfr-token,这是因为攻击者无法修改req的http头。
基本上你必须发送两个cookie:
1)与JWT的HttpOnly Cookie 1)no-HttpOnly Cookie with xsrf-token
然后创建一个Interceptor thar从cookie中读取xsrf-token并添加一个头x-xsrf-token。服务器端检查JWT中的xsrf-token是否等于x-xsrf-token中的令牌(对xsrf-token使用不可取的算法)
希望有所帮助