我知道这个问题已经被打死了,因为我已经阅读了很多有关Cookie和会话以及JWT的文章,问题和想法。希望这个问题不会及时解决,以获取有关我如何处理该问题的反馈。
我选择的文章是
Charles Miller's article, "Persistent Login Cookie Best Practice,"
"Remember Me" - Long-Term Persistent Authentication
Getting Token Authentication Right in a Stateless Single Page Application
这是我的想法:
未登录的用户访问网站,创建了基本会话。
未登录的用户登录或注册。
选择器和验证器的作用应类似于文章1中的系列标识符和令牌。
由于这不是SPA,并且我没有使用Angular,因此我想解决身份验证Bearer标头的问题是,只要页面加载,就在其过期之前获取可读的cookie。在随后的页面导航中,拦截锚点单击,使用可读cookie中的内容设置cookie,然后继续进行导航。据我了解,防止CSRF的一种主要方法是设置Bearer标头客户端,因此通过Javascript设置cookie会是相同的策略吗?
我知道这不能解决XSS,但是如果XSS是该网站的主要问题,那么其他所有内容都将消失。
此工作流程有什么问题?一些改善的方法?还是完全删除以替代另一种选择?我知道这是一个非常广泛而笼统的问题,但我感谢您提供任何反馈意见,因此我可以避免再为这个问题而烦恼,而可以继续开发该网站。谢谢。
编辑:使用JWT的原因是该站点有些无状态...不需要在每个页面请求中都进行数据库查找。当JWT到期时,无论是否持续登录,查找仅每15分钟发生一次。我猜想使用常规的cookie并将验证器,userId和15分钟的过期时间放到一个长久的,安全的仅HTTP的cookie中就可以了,而无需JWT ...