我知道基于cookie的身份验证.可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份验证.但是,需要采取更多特殊措施以保护其免受CSRF的影响.它们有点复杂.(参考)
最近,我发现JSON Web Token(JWT)作为身份验证的解决方案非常热门.我知道有关编码,解码和验证JWT的内容.但是,我不明白为什么有些网站/教程在使用JWT时不需要CSRF保护.我已经阅读了很多,并试图总结下面的问题.我只是希望有人可以提供JWT的全貌并澄清我对JWT误解的概念.
如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,除了服务器不需要有会话来验证cookie /令牌.如果没有实施特殊措施,CSRF仍存在风险.JWT不是存储在cookie中吗?
如果JWT存储在localStorage/sessionStorage中,那么没有cookie所以不需要防止CRSF.问题是如何将JWT发送到服务器.我发现这里建议使用jQuery通过ajax请求的HTTP头发送JWT.那么,只有ajax请求才能进行身份验证吗?
此外,我发现还有一个博客节目使用"授权标题"和"承载"来发送JWT.我不明白博客谈论的方法.有人可以解释一下"授权标题"和"持票人"的更多信息吗?这是否使所有请求的HTTP头传输JWT?如果是的话,CSRF怎么样?
我开始使用angularJS开发一个web应用程序,我不确定一切都是正确的安全(客户端和服务器端).安全性基于单个登录页面,如果检查完凭证,我的服务器会发回一个具有自定义时间有效性的唯一令牌.所有其他REST api都可以通过此令牌访问.应用程序(客户端)浏览到我的入口点ex:https://www.example.com/home.html用户插入凭据并接收一个唯一令牌.此唯一令牌使用AES或其他安全技术存储在服务器数据库中,不以明文格式存储.
从现在开始,我的AngluarJS应用程序将使用此令牌对所有暴露的REST Api进行身份验证.
我正在考虑将令牌临时存储在自定义的http cookie中; 基本上,当服务器验证凭据时,它会发回一个新的Cookie Ex.
app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T
Run Code Online (Sandbox Code Playgroud)
该cookie具有安全和HTTP Only标志设置.Http协议直接管理新cookie并存储它.连续请求将使用新参数呈现cookie,而无需管理它并使用javascript存储它; 在每次请求时,服务器使令牌无效并生成一个新令牌并将其发送回客户端 - >使用单个令牌防止重放攻击.
当客户端从任何REST Api 收到HTTP状态401未授权响应时,角度控制器清除所有cookie并将用户重定向到登录页面.
我应该考虑其他方面吗?将令牌存储在新cookie或localStorage中更好吗?有关如何生成唯一强令牌的任何提示?
编辑(改进):
authentication cookies rest angularjs angularjs-authentication
我正在PHP Lumen中构建一个应用程序,它在登录时返回一个令牌.我不知道如何超越这个.
我该如何使用这些令牌维护会话?
具体来说,如果我使用reactjs或vanilla HTML/CSS/jQuery,如何在我为Web应用程序的安全部分发出的每个请求中发送它们,如何在客户端存储令牌?
我在node js. 我正在为仪表板创建路线。
JWT token.如何验证后端管理员的路由?