新项目要嵌入之前的一个项目,而且该被嵌入项目之前提供给第三方使用,他们也是用的iframe。以前都是好的,但是现在发现要是iframe的地址和父级的地址不同源,项目登录时无法设置cookie。
一开始以为后端出问题了,后来换火狐、ie edge 都是可以的,并且其他人的Chrome也有可以用的。
并且接口设置cookie时提示:“this set-cookie didnot specify a "sameSite" attribute and was defaulted to "sameSite=Lax" and broke the same rules specified in the SameSiteLax value”。
从Chrome 51开始,浏览器的Cookie新增加了一个SameSite属性,用来防止CSRF攻击和用户追踪。
该设置当前默认是关闭的,但在Chrome 80之后,该功能默认已开启。
所以当你无法使用某些网站第三方登录功能的时候,请查看一下是否受到了该设置的影响。
对于使用者,快速解决方案:
方案1. 打开Chrome设置,将chrome://flags/#same-site-by-default-cookies禁用,然后重启浏览器。
package org.pentaho.platform.web.http.filters; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; public class SameSiteNoneFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, new SameSiteNoneHttpServletResponseWrapper((HttpServletResponse) response)); } @Override public void destroy() { } }
...
package org.pentaho.platform.web.http.filters; import java.io.IOException; import java.io.PrintWriter; import java.util.Collection; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import javax.ws.rs.core.HttpHeaders; public class SameSiteNoneHttpServletResponseWrapper extends HttpServletResponseWrapper { private final HttpServletResponse response; public SameSiteNoneHttpServletResponseWrapper(HttpServletResponse response) { super(response); this.response = response; } @Override public void sendRedirect(String location) throws IOException { addSameSiteCookieAttribute(); super.sendRedirect(location); } @Override public void sendError(int sc) throws IOException { addSameSiteCookieAttribute(); super.sendError(sc); } @Override public void sendError(int sc, String msg) throws IOException { addSameSiteCookieAttribute(); super.sendError(sc, msg); } @Override public PrintWriter getWriter() throws IOException { addSameSiteCookieAttribute(); return super.getWriter(); } @Override public ServletOutputStream getOutputStream() throws IOException { addSameSiteCookieAttribute(); return super.getOutputStream(); } private void addSameSiteCookieAttribute() { Collection<String> headers = this.response.getHeaders(HttpHeaders.SET_COOKIE); boolean firstHeader = true; for (String header : headers) { // there can be multiple Set-Cookie attributes String flags; if (header.contains("Secure;")) { flags = "SameSite=None"; } else { flags = "Secure; SameSite=None"; } if (firstHeader) { this.response.setHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, flags)); firstHeader = false; continue; } this.response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, flags)); } } }
web.xml
<filter> <filter-name>SameSite Filter</filter-name> <filter-class>org.pentaho.platform.web.http.filters.SameSiteNoneFilter</filter-class> </filter> <filter-mapping> <filter-name>SameSite Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
...
相关推荐
在Google Chrome 80版本中,默认情况下,所有未明确声明SameSite属性的cookies都会被视为“SameSite=Lax”,这意味着它们不会在跨站请求(如第三方脚本、iframe或链接点击)中发送,以此来增强网站的安全性,防止...
将指定网站上的 Cookie 恢复为旧版 SameSite 行为,下载之后将baidu.com改为自己需要设置的域名
SameSiteCookiesServiceCollectionExtensions.cs 解决 Chrome 等浏览器因为 SameSite 导致的问题。 使用方法参见:https://asdfg.blog.csdn.net/article/details/108514763
自Chrome 80以来,此扩展程序正在调整Cookie SameSite属性问题。 注意:此扩展名是实验性的。 特征 将SameSite属性添加到Magento会话cookie中。 对于3DS付款,付款网关倾向于通过POST将请求发送到基于Magento的网站...
新的"SameSite" Cookie政策默认设置为"Lax",这限制了第三方Cookie的跨站点追踪,增强了用户的隐私保护。 2. **HTTPS优先**:此版本开始,默认情况下,Chrome会将非HTTPS链接重定向到相应的HTTPS版本,以促进更安全...
)背景在2020年2月推出的Chrome 80中,Chrome会将未声明SameSite值的Cookie视为SameSite=Lax Cookie。 预计其他浏览器供应商将效仿Google的领导。 (请参阅此)。 如果您管理跨站点Cookie,则需要应用SameSite = ...
mac跨域问题: 在目录/Users/...打开chrome 输入 chrome://flags/ 搜索 SameSite by default cookies 找到SameSite by default cookies和Cookies without SameSite must be secure 将上面两项设置为 Disable
Chrome 这几天发布的 80 版本更新了 “Same Site Cookie” 的安全特性 下面是一篇介绍文章 ...这个特性会导致: ...如果网站需要跨域分享数据,则设置相关cookie的samesite属性为none 作者:深入浅出0
在Chrome浏览器的一次更新中,默认SameSite属性被设为`Lax`,这导致了一些使用旧代码的网站出现问题,因为它们可能依赖于默认的无限制行为。"lift-samesite-cookie-workaround"项目就是为了应对这种情况,提供了一种...
对Chrome的更改意味着我们必须默认禁用Cookie才能禁用SameSite,以便在本地运行该项目。 去做这个; 在Chrome中访问: chrome:// flags / 默认情况下将SameSite Cookie更改为“已禁用” Elasticsearch和MongoDB ...
自Chrome 80开始,谷歌增强了对cookie的安全控制,引入了新的SameSite和Secure属性策略。SameSite属性用于限制第三方cookie的发送,防止跨站请求伪造(CSRF)攻击。Secure属性则要求cookie只能在HTTPS协议下传输,以...
深入分析:出于隐私安全的考虑,IE 会丢失 Iframe 中的 Cookie,IE6/IE7 支持的 P3P(Platform for Privacy Preferences Project specification)协议默认阻止第三方无隐私安全声明的 Cookie,Firefox、Chrome 不...
:warning: 禁用chrome samesite进行测试: chrome:// flags /#same-site-by-default-cookies docker-compose.yml(docker平台) # # start docker docker-compose up --detach --build # # stop docker docker-...
如果您使用的是Chrome浏览器,请转到:chrome:// flags并禁用“没有SameSite的Cookie必须安全”。 出于某些愚蠢的原因,chrome在.local域上强制执行此操作。 FireFox足够聪明,不会将其搞砸。 约定和布局 我们的...
)5.3.5新网站设计兼容错误修复5.3.4新网站设计支持5.3.3 Chrome 80.x兼容,Samesite支持5.3.2组织不需要的可用性(标签)扩展5.3.1更改设计要从Chrome工具栏图标设计5.3.0新猎犬实验5.2.10新功能β版本联系准备...
全面的Chrome支持(SameSite = None) 要求 具有以下路由的完全设置的jwt身份验证服务器(如 ) 路线 方法 论点 标头 回复 /登录 邮政 邮箱密码 -- ([ 'success' => true, 'message' => 'auth successful', '...
如果Google Chrome版本> = 84,则需要使用Secure和SameSite=None更改exhentai.org cookie, 屏幕截图 用法 由于浏览器(cors)中的webSecurity,我们无法直接访问exhentai图像,因此,在使用该网站之前,您应该登录...
语言:English ... 在“转换体验”内部以及可视化编辑器的一部分中,体验设置的质量保证和设计过程中...由于我们协助iframe,x-header和SameSite Cookie的设置,因此将您正在使用的域和子域列入白名单可让您在应用程序编辑
它执行以下操作: 删除所有x-frame-options响应标头删除所有content-security-policy响应标头更改所有set-cookie响应标头以设置SameSite=None (这也需要为cookie设置Secure标志) 如果sec-fetch-dest请求标头等于...