当前位置: 首页 > news >正文

spring低版本设置cookie的samesite属性

场景:比较古老的项目了,ssh架子,Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,可用于防止 CSRF 攻击和用户追踪。因此需要给其字段赋值。

网上找了很多资源,由于jar版本比较低,没有samesite字段,尝试过继承cookie重写类,修改tomcat配置等方式,均不可用;

查看了一些文档,最直接的方式试了下,可行:

private xxx xxx(){            
String sessionValue=((HttpServletRequest) request).getSession().getId();addSameSiteAttribute((HttpServletResponse)response,sessionValue);filter.doFilter(request, response);
}//自定修改cookie某属性内容
private void addSameSiteAttribute(HttpServletResponse response,String sessionValue) {//如果需要修改多个cookie属性 使用	response.addHeader(),内容格式与下方一致
response.setHeader("Set-Cookie","JSESSIONID="+sessionValue+";Path=/imService;HttpOnly=true;Secure;SameSite=Strict");}

SameSite可以设置为三个属性strict,Lax,None

strict属性:该属性表示表示完全禁止第三方cookie,也就是在跨站时,均不会携带cookie,只有当前站点的url和访问的站点的url一致时,才能携带cookie。但是我们此时想一种情况,比如说当前站点A存在一个链接,链接到gitte网站,如果我们之前已经登录了gitte网站的话,则我们再次访问该网站时应该是处于登录状态的。但是我们对当前站点cookie设置了SameSite属性为strict值,所以当前跳转链接并不会携带cookie,所以我们的信息无法得到认证,此时就需要重新登录

Set-Cookie: CookieName=CookieValue; SameSite=strict;

Lax:该属性比strict的属性要宽松一些,其允许我们在跨站使用get请求时(不准确,比如ajaxget)携带cookie。(重定向和window.open 是get请求

Set-Cookie: CookieName=CookieValue; SameSite=Lax;

None属性:chrome默认将Lax设置为默认值,此时我们可以更改samesite的值,将其设置为none,此时必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

Set-Cookie: widget_session=abc123; SameSite=None;Secure;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • roles
  • 力扣热题100_回溯_22_括号生成
  • openstack基本操作
  • windows平台的postgresql主从数据库流备份
  • UNiapp之微信小程序导出Excel
  • PCIe学习笔记(25)
  • OpenHarmony基础组件—图片加载ImageKnife
  • 登录 k8s-Dashboard 显示 Your connection is not private
  • 多线程并行
  • 水库大坝安全预警系统的创新与应用
  • 职场那些事:应对施暴者的智慧
  • 代码随想录训练营 Day36打卡 动态规划 part04 1049. 最后一块石头的重量II 494. 目标和 474. 一和零
  • 流动会场:声音与空间完美融合,重新定义城市多功能场所—轻空间
  • 虚拟化平台kvm架构 部署kvm虚拟化平台
  • OpenCV几何图像变换(3)计算透视变换矩阵函数getPerspectiveTransform()的使用
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • const let
  • Debian下无root权限使用Python访问Oracle
  • HTTP--网络协议分层,http历史(二)
  • JavaScript 奇技淫巧
  • JavaScript对象详解
  • October CMS - 快速入门 9 Images And Galleries
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • SQLServer插入数据
  • Vue.js 移动端适配之 vw 解决方案
  • windows-nginx-https-本地配置
  • 构造函数(constructor)与原型链(prototype)关系
  • 聚类分析——Kmeans
  • 巧用 TypeScript (一)
  • 软件开发学习的5大技巧,你知道吗?
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 手机端车牌号码键盘的vue组件
  • 我有几个粽子,和一个故事
  • 新版博客前端前瞻
  • 阿里云服务器购买完整流程
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #100天计划# 2013年9月29日
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2020)Java后端开发----(面试题和笔试题)
  • (python)数据结构---字典
  • (笔记)M1使用hombrew安装qemu
  • (补充)IDEA项目结构
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)c++ std::pair 与 std::make
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)nsfocus-绿盟科技笔试题目
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)从 Java 代码到 Java 堆