最近登录时,突然控制台打印了一个新的警告:
某些 Cookie 滥用推荐的“sameSite“属性 由于 Cookie “_jfinal_captcha”的“sameSite”属性设置为“none”,但缺少“secure”属性,此 Cookie 未来将被拒绝。 若要了解“sameSite“的更多信息,请参阅:https://developer.mozilla.org/docs/Web/HTTP/Cookies
之前没有这样的警告。
搜了一下,是Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。
以前,如果SameSite属性没有设置,或者没有得到运行浏览器的支持,那么它的行为等同于None,Cookies会被包含在任何请求中——包括跨站请求。 但是,在新版本的浏览器中,SameSite的默认属性是SameSite=Lax。换句话说,当Cookie没有设置SameSite属性时,将会视作SameSite属性被设置为Lax——这意味着Cookies将会在当前用户使用时被自动发送。如果想要指定Cookies在同站、跨站请求都被发送,那么需要明确指定SameSite为None
可见,是我的火狐浏览器不够“新”,所以默认成了none,所以出了提示。而新版会默认为Lax,也就不会有该提示了。
SameSite可以有下面三种值: None 浏览器会在同站请求、跨站请求下继续发送cookies,不区分大小写。 Strict 浏览器将只在访问相同站点时发送cookie。(在原有Cookies的限制条件上的加强,如上文“Cookie的作用域” 所述) Lax 在新版本浏览器中,为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者frames的调用,但只有当用户从外部站点导航到URL时才会发送。如link链接
然而,有些用户可能并不能及时升级浏览器版本。
是否会考虑在4.9里面增加cookie默认的SameSite属性?