首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Spring Boot2.1.0中禁用登录时Set-Cookie头上的HttpOnly标志

在Spring Boot2.1.0中禁用登录时Set-Cookie头上的HttpOnly标志,可以通过配置Spring Security来实现。HttpOnly标志是用于保护客户端Cookie免受跨站点脚本攻击的安全特性,禁用该标志可能会增加安全风险,请在实际场景中慎重考虑。

要禁用登录时Set-Cookie头上的HttpOnly标志,可以按照以下步骤进行操作:

  1. 创建一个自定义的HttpServletResponseWrapper类,用于重写addHeadersetHeader方法。
代码语言:txt
复制
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class CustomHttpServletResponseWrapper extends HttpServletResponseWrapper {

    public CustomHttpServletResponseWrapper(HttpServletResponse response) {
        super(response);
    }

    @Override
    public void addHeader(String name, String value) {
        if (!"Set-Cookie".equalsIgnoreCase(name)) {
            super.addHeader(name, value);
        }
    }

    @Override
    public void setHeader(String name, String value) {
        if (!"Set-Cookie".equalsIgnoreCase(name)) {
            super.setHeader(name, value);
        }
    }
}
  1. 创建一个Filter类,用于过滤所有请求并应用自定义的HttpServletResponseWrapper
代码语言:txt
复制
import org.springframework.web.filter.GenericFilterBean;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CustomFilter extends GenericFilterBean {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        CustomHttpServletResponseWrapper wrapper = new CustomHttpServletResponseWrapper((HttpServletResponse) response);
        chain.doFilter(request, wrapper);
    }
}
  1. 在Spring Boot应用程序的配置类中注册自定义的Filter
代码语言:txt
复制
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomFilterConfig {

    @Bean
    public FilterRegistrationBean<CustomFilter> customFilter() {
        FilterRegistrationBean<CustomFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new CustomFilter());
        registrationBean.setOrder(1); // 设置Filter的优先级
        registrationBean.addUrlPatterns("/*"); // 设置Filter的URL匹配规则
        return registrationBean;
    }
}

通过以上步骤,将自定义的Filter注册到Spring Boot应用程序中后,它将拦截所有请求并应用CustomHttpServletResponseWrapper来禁用登录时Set-Cookie头上的HttpOnly标志。

请注意,这仅适用于Spring Boot2.1.0版本,其他版本可能有所不同。此外,禁用HttpOnly标志可能会导致安全风险,建议在实际应用中进行详细的安全评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一篇解释清楚Cookie是什么?

使用场景: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(跟踪分析用户行为等) 二、Cookie 生成过程 1、生成 cookie...服务器生成了 cookie 数据 并设置为 Set-Cookie 属性,包含在 HTTP 协议 Header ,来告诉浏览器保存这些数据(除非浏览器禁用了 Cookie)。...无法读取cookie)当 cookie 数据,只用于服务器,可以设置此属性;可防止通过 JavaScript 访问 cookie 值; 这两个属性可以有效防御 大部分 XSS 攻击。...在新版本浏览器,为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者 frames 调用,但只有当用户从外部站点导航到URL才会发送。...五、操作 Cookie 方法 1、JavaScript API JavaScript 代码通过 Document.cookie 来创建 Cookie,也能用其访问不带 HttpOnly 标志 Cookie

1.5K10

前后端接口鉴权全解 CookieSessionToken 区别

例如登录之后,服务器给你一个标志,就存在 cookie 里,之后再连接,都会自动带上 cookie,服务器便分清谁是谁。...另外,cookie 还可以用于跟踪一个用户,这就产生了隐私问题,于是也就有了“禁用 cookie”这个选项(然而现在这个时代禁用 cookie 是挺麻烦事情)。...设置跨域不携带 cookie,防止CSRF Secure 和 HttpOnly 是强烈建议开启。...相反,只放其他信息或是仅仅证明“已登录标志的话,只要退出一次,这个 cookie 就失效了,算是降低了潜在危险。...过去网上银行不是只要短信认证就能转账,还要经过一个密码器,上面显示着一个变动密码,在转账你需要输入密码器代码才能转账,这就是 token 现实世界例子。

1.3K30
  • 解决新版chrome跨域问题:cookie丢失以及samesite属性问题「建议收藏」

    发现问题: 登录界面前后端分离,ajax提交登录出错 验证码接口和登录接口session不一致(跨域问题) 在网上搜索跨域问题,重新设置,问题依旧 错因排除: ajax允许cookie(已经设置...至于不同Chrome版本号问题可以参考这篇文章:关于解决Chrome新版本cookie跨域携带和samesite问题处理 <!...方法如下: 1.在chrome打开链接: chrome://flags/#site-isolation-trial-opt-out,搜索samesite 2.将上述三个选项禁用(设为disable...然而,我们不可能要求用户像我们一样去禁用新版chromeSameSite,目前建议就是在header设置samesite,即上述response.setHeader("Set-Cookie",..."HttpOnly;Secure;SameSite=None")后,使用https传输cookie。

    4.6K10

    实用,完整HTTP cookie指南

    这有许多用途发:用户跟踪、个性化,以及最重要身份验证。...例如,一旦你登录网站,后端就会给你一个cookie: Set-Cookie: userid=sup3r4n0m-us3r-1d3nt1f13r 为了在每个后续请求中正确识别 我们身份,后端会检查来自请求浏览器...为了在不同来源Fetch请求包含cookie,我们必须提credentials 标志(默认情况下,它是相同来源)。...如果有设置 HttpOnly 看起来是这样Set-Cookie: "id=3db4adj3d; HttpOnly" 在 Flask response.set_cookie(key="id",...关于这个主题似乎有很多困惑,因为JWT基于令牌身份验证似乎要取代“旧”、可靠模式,基于会话身份验证。 来看看 cookie 在这里扮演什么角色。

    6K40

    【网络知识补习】❄️| 由浅入深了解HTTP(四) HTTP之cookies

    通常,它用于告知服务端两个请求是否来自同一浏览器,保持用户登录状态。Cookie 使基于无状态HTTP协议记录稳定状态信息成为了可能。...Cookie 主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(跟踪分析用户行为等) Cookie... link 链接 以前,如果 SameSite 属性没有设置,或者没有得到运行浏览器支持,那么它行为等同于 None,Cookies 会被包含在任何请求——包括跨站请求。...Cookie 不能包含 HttpOnly 标志。...安全 信息被存在 Cookie ,需要明白 cookie 可以被访问,且可以被终端用户所修改

    1.9K20

    【SpringSecurity系列(十六)】会话固定攻击与防御

    ---- 前两天和大家聊了 Spring Security session 并发问题,和小伙伴们聊了如何像 QQ 一样,用户在一台设备上登录成功之后,就会自动踢掉另一台设备上登录。...在服务端响应头中有一个 Set-Cookie 字段,该字段指示浏览器更新 sessionid,同时大家注意还有一个 HttpOnly 属性,这个表示通过 JS 脚本无法读取到 Cookie 信息,这样能有效防止...就是用户如果在浏览器禁用了 cookie,那么 sessionid 自然也用不了了,所以有的服务端就支持把 sessionid 放在请求地址: http://www.taobao.com;jsessionid...3.如何防御 这个问题根源在 sessionid 不变,如果用户在未登录拿到是一个 sessionid,登录之后服务端给用户重新换一个 sessionid,就可以防止会话固定攻击了。...另一方面就是响应 Set-Cookie 字段中有 HttpOnly 属性,这种方式避免了通过 XSS 攻击来获取 Cookie 会话信息进而达成会话固定攻击。

    86441

    HTTP cookies

    通常,它用于告知服务端两个请求是否来自同一浏览器,保持用户登录状态。Cookie使基于无状态HTTP协议记录稳定状态信息成为了可能。...Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(跟踪分析用户行为等) Cookie曾一度用于客户端数据存储...提示: 如何在以下几种服务端程序设置 Set-Cookie 响应头信息 : PHP Node.JS Python Ruby on Rails HTTP/1.0 200 OK Content-type:...例如,如果设置 Domain=mozilla.org,则Cookie也包含在子域名developer.mozilla.org)。...account=bob&amount=1000000&for=mallory"> 当你打开含有了这张图片HTML页面,如果你之前已经登录了你银行帐号并且Cookie仍然有效(还没有其它验证步骤),

    2.2K40

    HTTP cookie 完整指南

    这有许多用途发:用户跟踪、个性化,以及最重要身份验证。...例如,一旦你登录网站,后端就会给你一个cookie: Set-Cookie: userid=sup3r4n0m-us3r-1d3nt1f13r 为了在每个后续请求中正确识别 我们身份,后端会检查来自请求浏览器...你可以通过查看 “Network” 标签请求来确认,没有发送此类Cookie: 为了在不同来源Fetch请求包含cookie,我们必须提credentials 标志(默认情况下,它是相同来源)...如果有设置 HttpOnly 看起来是这样Set-Cookie: "id=3db4adj3d; HttpOnly" 在 Flask response.set_cookie(key="id",...关于这个主题似乎有很多困惑,因为JWT基于令牌身份验证似乎要取代“旧”、可靠模式,基于会话身份验证。 来看看 cookie 在这里扮演什么角色。

    4.3K20

    HTTP系列之:HTTPcookies

    通过在cookies存储一些有用数据,可以将无状态HTTP协议变成有状态session连接,或者用来保存登录权限,下次不用密码即可登陆,非常有用。...一般来说,cookies用在三个方面: session管理,用来保存登录状态,从而让HTTP请求可以带上状态信息。 用户自定义设置,这些用户特殊字段,需要保存在cookies。...创建cookies 因为cookies是客户端本地存储,所以如果服务器端想要设置客户端cookies,通过在响应头中设置Set-Cookie,浏览器接收到这个响应头之后,就会将对应cookies...还有一个属性是HttpOnly,如果cookies设置了HttpOnly,那么cookies是不允许被JavaScript访问,通过设置HttpOnly,我们可以提升客户端数据安全性: Set-Cookie...对于有些浏览器来说,可能会禁用第三方cookies,这有可能会导致访问网站一些功能问题,大家可以主要观察一下。

    94220

    HTTP系列之:HTTPcookies

    通过在cookies存储一些有用数据,可以将无状态HTTP协议变成有状态session连接,或者用来保存登录权限,下次不用密码即可登陆,非常有用。...一般来说,cookies用在三个方面: session管理,用来保存登录状态,从而让HTTP请求可以带上状态信息。 用户自定义设置,这些用户特殊字段,需要保存在cookies。...创建cookies 因为cookies是客户端本地存储,所以如果服务器端想要设置客户端cookies,通过在响应头中设置Set-Cookie,浏览器接收到这个响应头之后,就会将对应cookies...还有一个属性是HttpOnly,如果cookies设置了HttpOnly,那么cookies是不允许被JavaScript访问,通过设置HttpOnly,我们可以提升客户端数据安全性: Set-Cookie...对于有些浏览器来说,可能会禁用第三方cookies,这有可能会导致访问网站一些功能问题,大家可以主要观察一下。

    74700

    渗透测试XSS漏洞原理与验证(3)——Cookie安全

    Cookie机制Cookie机制:一般来说,同域内浏览器中发出任何一个请求都会带上Cookie,无论请求什么资源,请求,Cookie出现在请求头Cookie字段。...服务端响应头Set-Cookie字段可以添加、修改和删除Cookie,客户端通过javascript也可以添加、修改和删除Cookie。另外,Cookie是无法跨浏览器存在。...、所属相对路径、域名、是否有Secure标志、是否有HttpOnly标志子域Cookie机制Domain字段,设置cookie,如果不指定则默认是本域,例如x.xxx.com域通过javaScript...内存Cookie通常用于存储临时数据,购物车物品或表单填写过程一些状态信息。安全性方面,因为它们不在硬盘上保存,所以相对更难被恶意软件或黑客长期监控获取。...然而,在实际应用,也需要结合其他安全措施来保护Cookie信息,比如使用HTTPS加密传输、设置HttpOnly标志来防止JavaScript访问Cookie、使用Secure标志来确保Cookie

    12510

    【Web技术】245-全面了解Cookie

    二、Cookie传输 服务器端在实现Cookie标准过程,需要对任意HTTP请求发送Set-Cookie HTTP头作为响应一部分: Set-Cookie: name=value; expires...安全标志(secure):指定之后只允许Cookie发送给https协议。 浏览器在发送请求,只会将名称与值添加到请求头Cookie字段,发送给服务端。...四、服务端Cookie 相比较浏览器端,服务端执行Cookie写操作,是将拼接好Cookie字符串放入响应头Set-Cookie字段;执行Cookie读操作,则是解析HTTP请求头字段Cookie...httpOnly 服务端Set-Cookie字段中新增httpOnly属性,当服务端在返回Cookie信息中含有httpOnly字段,开发者是不能通过JavaScript来操纵该条Cookie字符串...这样做好处主要在于面对XSS(Cross-site scripting)攻击,黑客无法拿到设置httpOnly字段Cookie信息。

    57910

    【Web技术】238-全面了解Cookie

    二、Cookie传输 服务器端在实现Cookie标准过程,需要对任意HTTP请求发送Set-Cookie HTTP头作为响应一部分: Set-Cookie: name=value; expires...安全标志(secure):指定之后只允许Cookie发送给https协议。 浏览器在发送请求,只会将名称与值添加到请求头Cookie字段,发送给服务端。...四、服务端Cookie 相比较浏览器端,服务端执行Cookie写操作,是将拼接好Cookie字符串放入响应头Set-Cookie字段;执行Cookie读操作,则是解析HTTP请求头字段Cookie...httpOnly 服务端Set-Cookie字段中新增httpOnly属性,当服务端在返回Cookie信息中含有httpOnly字段,开发者是不能通过JavaScript来操纵该条Cookie字符串...这样做好处主要在于面对XSS(Cross-site scripting)攻击,黑客无法拿到设置httpOnly字段Cookie信息。

    58020

    解决document.cookie无法获取到cookie问题

    二、场景复现 首先登录后,浏览器是有记录cookie,如图 然后我代码层执行documen.cookie发现获取不到,浏览器控制台也同样 后面去研究了一下application存放...cookies属性内容,发现有个属性HttpOnly是选中状态,这个状态是由于后端设置cookie时候设置了该属性为true导致 //后端代码 public static void addCookie...设置false状态后,documen.cookie就能够获取到 百度查了一下HttoOnly属性作用,觉得这个博主解释很到位【HttpOnly解答】 HttpOnly是2016年微软为IE6而新增了这一属性...HttpOnly是包含在http返回头Set-Cookie里面的一个附加flag,所以它是后端服务器对cookie设置一个附加属性,在生成cookie使用HttpOnly标志有助于减轻客户端脚本访问受保护...cookie风险(如果浏览器支持则会显示,若不支持则选择传统方式) 也就是说HttpOnly存在主要是为了防止用户通过前端来盗用cookie而产生风险,例如XSS攻击就是对cookie进行盗窃,使用这一属性就可以防止客户端

    4.6K20

    软件安全性测试(连载3)

    XSS攻击通常指的是通过利用网页开发留下漏洞,通过巧妙方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造网页程序。攻击代码,在XSS称作PayLoad。 1....程序通常会在Cookie设置一些用户隐私信息,这些信息一旦泄露,是否有一定威胁。那么有什么办法可以不让用户获得Cookie信息呢?这个时候“HTTPOnly”这个武器就出场了。...HttpOnly cookie最初是由Microsoft Internet Explorer开发人员于2002年在Internet Explorer 6 SP1版本实现。...HttpOnlySet-Cookie HTTP响应头中包含附加标志。生成cookie使用HttpOnly标志有助于降低客户端脚本访问受保护cookie风险(如果浏览器支持它)。...比如在TomCattom/conf/ 目录下context.xml修改即可将所有的Cookies设置HttpOnly。 4.

    63931
    领券