
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
会话和令牌的应用是程序员在提高网络安全防护领域会经常用到的一个互联网安全防护技术,下面我们就通过案例分析来了解一下,会话和令牌的作用与区别分析。
1、Cookie中的会话
Cookie是在服务器上创建并存储在用户设备(通常是浏览器)上的小数据块。
它们的主要特点是,一旦创建,就会随着特定域名的所有请求在客户端和服务器之间传递,而你不需要为此做任何工作。标准的会话流程相当简单:
提交证书。
在服务器上创建一个随机的sessionId,将其保存在数据库中,并在Cookie中发送回来。
然后,浏览器在随后的请求中自动包括上述Cookie,使服务器能够验证请求是否与它们声称的一样。
2、令牌
你可能已经用过JWT,但在基于令牌的身份验证中,令牌可以是任何东西,只要能够验证是你的服务器发出的就可以。换句话说,它需要一个可信赖的签名。
由于这种方法没有使用任何标准机制(像Cookie那样),所以要由客户端来确保令牌在所有身份验证请求中都存在。因此,流程类似下面这样:
提交证书。
在服务器上创建一个经过签名的令牌,并发回客户端。
将令牌保存在客户端,通常是本地存储中。
手动将令牌附加到未来的请求上。
3、会话vs.令牌
以下是会话与令牌的主要区别:
存储:sessionId同时存储在服务器(数据库)和客户端(Cookie)。令牌只存储在客户端,使其在某种程度上是无状态的。
验证:当验证Cookie中的sessionId时,你需要查询数据库。对于令牌,你只需验证令牌的签名。
多域:本质上讲,Cookie只在单个域中可用。由于令牌是手工添加的,你可以把它们发送到任何目的地。这使得它们在跨域的情况下胜出。此外,如你所见,使用令牌,你就不需要考虑数据库查询了。
撤销:因为会话可以在服务器上删除,所以你可以集中撤销。而令牌必须在客户端删除。如果你需要“在所有设备上签出”这种有吸引力的功能,那么会话是一个更好的选择。当用户重设密码或他们的账户被泄露时,情况也是如此。(对于令牌,你可以添加一个禁止表,列出下次不应接受其令牌的用户,但这样一来,无状态的好处也就不存在了......)
漏洞:由于Cookie是由浏览器自动包含进去的,所以会话容易受到CSRF的影响。由于令牌通常存在于本地存储中,所以它们更容易被XSS窃取。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。