swfupload提示“错误302”——SameSite

由于最近在做项目的时候,突然就发现用flash插件上传附件的时候导入失败了,在浏览器的控制台上给错的错误码是302,在仔细查看以后并没有传送相应的cookie值,于是就去网上查了很多资料,最终也没有得到一种很好的解决方案,先把自己在网上查阅的资料分享给大家!
Chrome80之后更新了cookie的携带机制,把原来的SameSite属性,由None改成了Lax,这就导致了一些需要使用到第三方cookie的应用产生了异常。
而SameSite则有三个值分别为Strict、Lax、None

1.Strict

Strict是最为严格的,它完全限制了所有的第三方Cookie,在任何的跨域调用时都不会去传输Cookie。只有在指定URL后,才会带上Cookie,如果使用重定向的话Cookie是不存在的,我们后在拿不到Cookie的时候就会显示页面无状态,这样就导致flash插件上传失败的原因之一。

2.Lax

Lax并不像Strict那么严格,Lax在通过预加载,链接,GET请求的下传输Cookie

请求类型示例正常情况StrictLaxNone
链接<a href="..."></a>发送Cookie不发送发送Cookie发送Cookie
预加载<link rel="prerender" href="..."/>发送Cookie不发送发送Cookie发送Cookie
GET请求<form method="GET" action="...">发送Cookie不发送发送Cookie发送Cookie
POST请求<form method="POST" action="...">发送Cookie不发送不发送发送Cookie
iframe<iframe src="..."></iframe>发送Cookie不发送不发送发送Cookie
ajax$.get("...")发送Cookie不发送不发送发送Cookie
image<img src="...">发送Cookie不发送不发送发送Cookie

设置了Strict或Lax以后,基本就杜绝了 CSRF 攻击。
从上面的表格可以看出,将SameSite的值从None改为Lax后,Form,Iframe,Ajax和Image中跨站的请求受到的影响最大。

3.None

Lax是默认的,如果想要关闭SameStite属性,就将其设置为None,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。如果将其设置成None,大大增加了CSRF攻击的可能性。(不推荐)

设置地址(chrome://flags/#same-site-by-default-cookies)

参考连接

http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html

如果大佬们有好的解决方案,希望可以在评论区讨论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值