暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用SameSite cookie防御CSRF攻击

WEB漏洞挖掘 2021-08-05
3379

一些网站使用SameSite cookie来防御CSRF攻击。

SameSite属性可用于控制cookie是否以及如何在CSRF中被提交的。通过设置会话cookie的属性,应用程序可以防止浏览器的默认行为,即自动将cookie添加到请求中,而不管请求来自何处。

当服务器发出cookie时,SameSite属性被添加到Set-Cookie响应头中,该属性可以被赋予两个值,Strict或Lax。例如:

Set-Cookie: SessionId=sYMnfCUrAlmqVVZn9dqevxyFpKZt30NN; SameSite=Strict;

Set-Cookie: SessionId=sYMnfCUrAlmqVVZn9dqevxyFpKZt30NN; SameSite=Lax;

如果SameSite属性设置为Strict,那么浏览器将不会在来自其他站点的任何请求中包含cookie。这是最具防御性的选项,但它可能会损害用户体验,因为如果一个已登录的用户跟随第三方链接到某个网站,那么他们就会出现没有登录的情况,在以正常方式与该网站交互之前,需要重新登录。

如果SameSite属性设置为Lax,那么浏览器将在来自另一个站点的请求中包含cookie,但只有在两个条件满足时:

  • 请求使用GET方法。使用其他方法(如POST)的请求将不包括cookie。

  • 该请求来自用户的顶级导航,例如单击链接。其他请求,例如脚本发起的请求,将不包括cookie。

在Lax模式下使用SameSite cookie确实提供了针对CSRF攻击的部分防御,因为作为CSRF攻击目标的用户操作通常是使用POST方法实现的。这里有两个重要的注意事项:

  • 有些应用程序确实使用GET请求实现敏感操作。

  • 许多应用程序和框架都能兼容不同的HTTP方法。在这种情况下,即使应用程序本身设计使用POST方法,它实际上也将接受切换到使用GET方法的请求。

基于上述原因,不建议仅仅依赖SameSite cookie来防御CSRF攻击。然而,与CSRF token一起使用时,SameSite cookie可以提供额外的防御层,这可能会缓解基于 token的防御中的任何缺陷。

文章转载自WEB漏洞挖掘,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论