添加了对SameSite cookie属性的支持 ¶
same-site
是一个新的cookie属性,能够让程序禁止第三方使用任何cookie。这可以帮助用户抵御CSRF攻击,因为如果没有cookie,攻击者在攻击时就不能看到你已经登陆网站。
在Symfony 3.2中,Cookie
类的构造器,增加了第九个参数也就是$sameSite
,来获取定义在Cookie::SAMESITE_LAX
和Cookie::SAMESITE_STRICT
常量中的值:
1 2 3 | use Symfony\Component\HttpFoundation\Cookie;
$cookie = new Cookie(..., Cookie::SAMESITE_LAX); |
strict模式可以防止任何针对cookie进行的跨站攻击。在lax模式下,一些顶级(top-level)的GET请求将被允许,比如点击一个跳向他站的链接,或者发送一个GET表单。
改进了对缓存头的响应 ¶
以前,如果你要处理一个301
永久重定向,同时不设置cache header,则no-cache
头会被Symfony添加。在Symfony 3.2中,这种行为被改变,现在的301
不再自动添加no-cache
头了,但它还存在,如果需要你可以显式指定它。
Symfony 3.2也修复了另一处与缓存头相关的前后不一致的地方。当no-cache
头出现时,Symfony也会添加private
指令(directive),因此响应中如果有no-cache
,现在还会多一个private
。
添加了isMethodIdempotent()用法 ¶
HTTP安全方法是指那些“取出资源,但不修改、删除或创建它们”的(只有GET
和HEAD
等被认为安全)。Request
类有一个isMethodSafe()
方法,用于检查给定的HTTP方法是否安全。
HTTP idempotent幂等性,是指一个请求序列(多次请求)可以得到相同的结果而没有任何额外的副作用(即,一次和多次请求某一个资源具有同样的效果)。例如,PUT
是幂等的,两次相同的请求之后,资源保持同样状态(始终是被替换),但是POST
不具等幂性,因为相同的两次请求之后,你面对的是同一内容的两个资源。
Symfony 3.2中我们添加了一个新方法isMethodIdempotent()
,用于检查给定的HTTP method是否具有幂等性。