Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 会话和基于令牌的身份验证之间的技术差异_Security_Authentication_Session Cookies_Jwt_Express Jwt - Fatal编程技术网

Security 会话和基于令牌的身份验证之间的技术差异

Security 会话和基于令牌的身份验证之间的技术差异,security,authentication,session-cookies,jwt,express-jwt,Security,Authentication,Session Cookies,Jwt,Express Jwt,我正在写我的学士学位,我需要找出哪种认证/授权方法最适合与我合作的公司 因此,我一直在比较会话和基于令牌的身份验证方法,但对于令牌如何工作以及它们如何优于会话身份验证,我还不清楚一些要点: 我100%清楚的唯一好处是,令牌可以从没有cookie存储的客户端使用,它们可以与不同的子域和完全独立的域一起使用,因为浏览器CORS策略不会阻止令牌的使用 我了解到,所有cookie都随每个请求一起发送到原始域(除非cookie设置为仅在安全连接上发送),这意味着令牌将在请求中出现两次,当然,除非您对来自

我正在写我的学士学位,我需要找出哪种认证/授权方法最适合与我合作的公司

因此,我一直在比较会话和基于令牌的身份验证方法,但对于令牌如何工作以及它们如何优于会话身份验证,我还不清楚一些要点:

我100%清楚的唯一好处是,令牌可以从没有cookie存储的客户端使用,它们可以与不同的子域和完全独立的域一起使用,因为浏览器CORS策略不会阻止令牌的使用

  • 我了解到,所有cookie都随每个请求一起发送到原始域(除非cookie设置为仅在安全连接上发送),这意味着令牌将在请求中出现两次,当然,除非您对来自另一个域的用户进行身份验证。这是正确的假设吗
  • 如何在服务器端验证令牌?解密后,是根据用户名、密码和密钥/私钥进行检查,还是仅检查此处使用的密钥/私钥
  • 如果我在为服务器上的某个资源授权时需要用户名/用户ID,而我没有对其进行身份验证,那么如果我没有原始用户数据可供检查,我是否可以盲目信任这些凭据
最后,许多文章声称令牌可以防止CSRF

CSRF:我们还可以防止跨站点请求伪造(CSRF)。用户很容易受到CSRF攻击,因为他们已经可以通过(比如)银行网站的身份验证,并且在访问其他网站时可以利用这一点。”

这对我来说毫无意义。他似乎在说类似OAuth的系统会阻止CSRF?我不太了解CSFR是如何工作的,所以这里可能只有我一个人是空白的,但据我所知,会话或令牌都不能防止这种情况,因为它们对每个请求都不是唯一的

编辑: 我刚刚意识到令牌可能阻止CSFR的原因是,如果另一个站点试图从您的浏览器向您的服务器提交表单,浏览器不会自动发送令牌。但这意味着,如果从服务器上的cookie头中提取令牌,则令牌可能会受到影响,如果您使用JWT,这应该不是问题,因为它使用自己的“授权”“标题,必须使用JS设置。 但这仍然让scotch.io的文章听起来像是胡说八道。

查看传统的基于cookie的身份验证系统和最近的基于令牌的系统的特征的良好总结

TL;基于DR令牌的身份验证比以往任何时候都更加相关。我们研究了cookie和基于令牌的身份验证之间的区别和相似性,使用令牌的优势,并解决了开发人员对基于令牌的身份验证的常见问题和担忧

我不太喜欢这个确切的术语,因为你放在饼干里的东西也可以被认为是一种象征;大多数情况下,它是一个按引用令牌,映射到一些服务器端数据,而所谓的基于令牌的身份验证支持按值令牌(JWT-),它在令牌本身中携带数据

JSON Web令牌(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。此信息可以验证和信任,因为它是经过数字签名的

这些按值令牌的验证由签名完成,签名确保令牌是由持有签名期间使用的关联密钥的实体创建的,并且在不知道密钥的情况下,内容不能被任何其他人篡改。这个前提是信任接收令牌的基础。

关于CSRF,基于令牌的系统确实会缓解这一问题,因为与cookie的情况相反,浏览器不会自动发送这些令牌凭据(假设令牌未作为cookie包含在请求中)

想象一下,应用程序
CK
公开使用会话cookie保护的资源,而应用程序
TK
公开使用令牌保护的资源

用户
X
在两个应用程序中进行身份验证,因此将为应用程序
CK
颁发会话cookie,并为应用程序
TK
颁发令牌。如果攻击者创建一个邪恶的站点
EV
并诱骗用户
X
访问它,它可以从用户浏览器中对应用程序
CK
TK
执行自动请求

但是,对于应用程序
CK
而言,用户
X
的浏览器将自动包含会话cookie,因此邪恶站点
EV
刚刚访问了受保护的资源,而对于应用程序
TK
的请求,浏览器将不会自动包含令牌