首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在运行时启用/禁用Spring中的CSRF?

如何在运行时启用/禁用Spring中的CSRF?
EN

Stack Overflow用户
提问于 2020-05-04 10:04:53
回答 1查看 163关注 0票数 0

我有下面的类,它有CSRF if/else条件。我从属性文件中读取此标志,并且可以使用/refresh端点更改标志值。:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @Order(-1)
    @EnableWebSecurity
    public class SomeConfigClass extends WebSecurityConfigurerAdapter {
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                 String csrfFlag = somePropertyFile.getCsrfFlag();
                 if(isCsrfEnable){
                      http.csrf()....some other code
                 }else {
                      http.csrf().disable();
                 }
            }
    }

问题:当我调试代码时,我发现这个类只在Spring容器启动时调用一次。在此之后将不会调用if。因此,即使将CSRF标志更改为false,这也会关闭CSRF标志,这将不起作用& CSRF检查仍将存在。

为了避免这种情况,我需要重启/重放应用程序,这样容器就会从属性文件中提取新的配置,这可能会导致应用程序停机。有没有人能更好地解决这个问题呢?

目标:应外部化CSRF禁用/启用标志。用户可以切换标志并启用/禁用CSRF,而无需重新启动/重新堆叠应用程序。

EN

回答 1

Stack Overflow用户

发布于 2020-05-04 13:08:16

您需要使用csrf保护匹配器来实现相同的功能。

您需要编写CSRFProtectionMatcher。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 http.csrf().requireCsrfProtectionMatcher(new CustomCsrfProtectionMatcher())
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());

CustomCsrfProtectionMatcher.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class CustomCsrfProtectionMatcher implements RequestMatcher {


    @Override
    public boolean matches(HttpServletRequest request) {
      //based on the logic..
      //You can store flag in DB or properties or XML File
      //Please note that for every request this flag will be checked.You can choose a 
      //better way to implement this
      return true/false;
    }
}

我个人建议保留在app.properties中,而不是按请求检查它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61589674

复制
相关文章
Spring boot with Schedule (启用/禁用)
本文节选自《Netkiller Java 手札》 5.19.4. 计划任务控制 matchIfMissing = true, 如果改属性条目不存在返回 true @ConditionalOnProperty("batch.metrics.export.influxdb.enabled") # mybean.enabled = true @ConditionalOnProperty(value='mybean.enabled') @ConditionalOnProperty(value = "endp
netkiller old
2018/03/05
2.8K0
Linux 中如何启用和禁用网卡?
当你添加一个网卡或者从一个物理网卡创建出一个虚拟网卡的时候,你可能需要使用这些命令将新网卡启用起来。另外,如果你对网卡做了某些修改或者网卡本身没有启用,那么你也需要使用以下的某个命令将网卡启用起来。
用户4988085
2021/09/14
18.5K0
如何在Ubuntu中禁用和启用CPU内核?
在某些情况下,您可能需要在Ubuntu操作系统中禁用或启用CPU内核。禁用CPU内核可以帮助您降低功耗,提高性能或解决一些与硬件和软件兼容性相关的问题。本文将介绍如何在Ubuntu中禁用和启用CPU内核的方法。
网络技术联盟站
2023/07/14
6470
如何在Ubuntu中禁用和启用CPU内核?
如何在Ubuntu中禁用和启用CPU内核?
在某些情况下,您可能需要在Ubuntu操作系统中禁用或启用CPU内核。禁用CPU内核可以帮助您降低功耗,提高性能或解决一些与硬件和软件兼容性相关的问题。本文将介绍如何在Ubuntu中禁用和启用CPU内核的方法。
网络技术联盟站
2023/09/05
6520
如何在Ubuntu中禁用和启用CPU内核?
IQKeyboardManager 启用/禁用
1.在摸个界面完全禁用IQKeyboard - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; //TODO: 页面appear 禁用 [[IQKeyboardManager sharedManager] setEnable:NO]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:anim
developerbfl
2018/06/05
2.5K0
Vbs 禁用启用网卡
在实际工作中,经常碰到需要通过脚本启用禁用网卡的情况,在网上找了一个脚本,实际是通过模拟键盘操作来启用禁用,但对于多种系统和比较复杂的情况操作性不好。
力哥聊运维与云计算
2019/06/28
2K0
Java如何在运行时识别类型信息?
在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得;但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”。
沉默王二
2019/09/17
1.1K0
如何在运行时(Runtime)获得泛型的真正类型
由于Java 的类型擦除机制,在编译时泛型都被转为了Object,例如List<String>经过编译之后将变为类型 List。可以通过以下的方式再运行时获得泛型的真正类型
用户3148308
2018/12/04
2.9K0
pycharm如何在运行时打开控制台[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/173186.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/25
1K0
pycharm如何在运行时打开控制台[通俗易懂]
Oracle 启用被禁用的外键
在Oracle中,面对已经被禁用的外键,我们该如何将它重新启用呢?本教程就为大家带来Oracle外键启用方法。
用户8965210
2021/09/02
8280
【jquery基础】按钮禁用和启用
在html标签中设置按钮被禁用,可以使用如下代码 <input type='button' id='test' value='disabled'> 在jquery中可以使用attr()函数修改按钮的disable属性 $(“#test”).attr(‘disabled',false); jquery 控制button的disabled属性
用户5640963
2019/07/25
4.6K0
Spring是如何启用aop切面
首先从后面说实现原理,通过aop包下的AspectJAwareAdvisorAutoProxyCreator 继承自AbstractAdvisorAutoProxyCreator 又继承 AbstractAutoProxyCreator\类,而*AbstractAutoProxyCreator*中有个方法
一滴水的眼泪
2020/09/21
1K0
Spring Boot 中如何启用 H2 的控制台
具体的配置你可以参考页面 Spring Boot 使用 H2 数据库的控制台(Console) 中的内容。
HoneyMoose
2020/04/05
7420
Spring Boot 中如何启用 H2 的控制台
Spring对CSRF的防范
这篇基本上是Spring Security Reference关于 CSRF 部分的一个笔记,只是记录一下核心逻辑。其它很多细节还是要参考官方文档。
dhyuan
2022/05/30
6440
如何在运行时动态添加和删除Qt Widgets
在油管上看到一篇关于Qt的视频:[How to Add & Remove Qt Widgets Dynamically at Runtime](https://www.youtube.com/watc
ccf19881030
2021/06/29
4K0
SpringBoot3集成Swagger
springfox 已经停止更新很久了,SpringBoot新版本都不支持。为了能够继续使用Swagger,只能调整继承库。
郭顺发
2023/07/17
2.2K0
SpringBoot3集成Swagger
如何启用Spring Boot Actuator的所有Endpoints
本文将介绍如何启用Spring Boot Actuator的所有Endpoints。首先从maven依赖开始,然后讲解如何通过配置文件来控制Endpoint(后称作端点)。最后再学习一下如何确保端点的安全。
程序新视界
2021/12/07
2.3K0
在运行时与构建时如何保护云计算基础设施
在当今的云原生世界中,随着基础设施的飞速发展,大规模构建云计算环境需要可再现性和弹性,因此需要从一开始就优先考虑快速更改和扩展基础设施的能力。
静一
2020/07/16
1.2K0
点击加载更多

相似问题

在运行时启用/禁用Spring-ws

11

使用Spring引导在运行时启用和禁用端点

20

在运行时启用/禁用SwaggerUI

216

在运行时启用/禁用PreferenceFragment中的选项

10

Spring缓存:在运行时通过application.properties启用/禁用缓存

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文