Spring Security配置错误

我最近看到Mike Wienser的SpringOne2GX谈论了Application Security Pitfalls 。 如果您在Servlet容器上使用Spring的堆栈,这将非常有用,值得一看。

它使我想起了我曾经面临的一个严重的Spring Security Misconfiguration。 在Spring的指导项目Securing a Web Application上进行解释。 该项目使用Spring Boot,Spring Integration和Spring MVC。

项目使用以下视图:

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/home").setViewName("home");registry.addViewController("/").setViewName("home");registry.addViewController("/hello").setViewName("hello");registry.addViewController("/login").setViewName("login");}}

应公开访问“ / home”,“ /”和“ / login” URL,而“ / hello”仅应由经过身份验证的用户访问。 这是《指南》中的原始Spring Security配置:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/", "/home").permitAll().anyRequest().authenticated();http.formLogin().loginPage("/login").permitAll().and().logout().permitAll();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");}
}

就像所有Spring指南一样,很好并且具有解释性。 第一种“配置”方法将“ /”和“家庭”注册为公共,并指定其他所有内容均应进行身份验证。 它还注册登录URL。 第二种“配置”方法指定角色“ USER”的身份验证方法。 当然,您不想在生产中像这样使用它!

现在,我将略微修改此代码。

@Overrideprotected void configure(HttpSecurity http) throws Exception {//!!! Don't use this example !!!http.authorizeRequests()              .antMatchers("/hello").hasRole("USER");//... same as above ...}

一切都是公共和私有端点,必须列出。 您可以看到我修改后的代码具有与原始代码相同的行为。 实际上,它节省了一行代码。

但是,这有一个严重的问题。 如果我需要引入新的专用端点怎么办? 假设我不知道它需要在Spring Security配置中注册的事实。 我的新端点将是公共的。 这样的配置错误确实很难发现,并且可能导致URL暴露。

因此得出的结论是: 默认情况下,始终对所有端点进行身份验证。

翻译自: https://www.javacodegeeks.com/2014/06/spring-security-misconfiguration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案

前言最近一直在想着能否有一种更好的方案来解决:Android中Activity与Fragment之间通信的问题,什么叫更好呢,就是能让Fragment的复用性高,性能还有好(不用反射),代码还要好维护,不需要为每对Activity和Fragm…

分布式人工智能标记语言(DAIML)示例

DAIML(Distributed Artificial Intelligence Markup Language)是用于分布式人工智能系统中智能语言的标记库。DAIML主要分为Pattern和Template两部分,Pattern用于模式匹配,Template用于回答模板,下面将分别介绍两者的示…

Ext.js数据展示问题name展示code

出现以上问题是因为model中定义的类型跟数据库不匹配 去掉js中vehicleModel的type或者改为type:int即可。转载于:https://www.cnblogs.com/feifeicui/p/10438900.html

新一代网络模式Web 2.0火爆发展

据TechnologyReview网站2006年4月12日消息,如果你是一位网络高手,你会发现网络工具和服务领域天翻地覆的新变化越来越充斥你的生活。你可以在Eventful网站或Upcoming网站上保存社交日历;可以在Gootodo上安排计划;在Box.net上储存1…

Solr中的前缀和后缀匹配

搜索引擎都是关于查找字符串的。 用户输入一个查询词,然后从反向索引中检索它。 有时,用户正在寻找的值只是索引中值的子字符串,并且用户可能也对这些匹配感兴趣。 对于德语这样的包含复合词(例如Semmelkndel)的语言&a…

评价viper4android,ViPer4android. FX顶级音效!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼名称:OPPO X903 杜比音效脉冲反馈样本 For VIPER4Android FX v2.0样本数量:72适配V4A版本:ViPER4Android FX v2.2.0.1 或更高适用范围:耳机内放制作者:漫游因特网授权&…

使用FormData进行Ajax请求上传文件

Servlet3.0开始提供了一系列的注解来配置Servlet、Filter、Listener等等。这种方式可以极大的简化在开发中大量的xml的配置。从这个版本开始,web.xml可以不再需要,使用相关的注解同样可以完成相应的配置。 我笔记里也有记文件上传:https://w…

基于 jq 实现拖拽上传 APK 文件,js解析 APK 信息

技术栈 jquery文件上传:jquery.fileupload,github 文档apk 文件解析:app-info-parser,github 文档参考:前端解析ipa、apk安装包信息 —— app-info-parser 支持功能 点击或拖拽上传 apk 文件校验文件类型及文件大小js …

POI获取WORD信息

最近由于工作需要,调研了一下关于poi获取word字体信息方面的方法,在这里mark一下。 首先word格式分为doc和docx,分别利用HWPFDocument和XWPFDocument对文档进行解析,话不多说,直接贴代码: 解析doc格式1 imp…

安全性

•完全适用ASP.NET的认证机制 –可以使用FormsAuthentication •WebService方法可以操作Cookie –Impersonation –PrincipalPermissionaspx<form id"form1"runat"server"><asp:ScriptManager runat"server"ID"ScriptManager1&quo…

调试以了解终结器

这篇文章涵盖了Java内置概念之一&#xff0c;称为Finalizer 。 这个概念实际上是众所周知的&#xff0c;也是众所周知的&#xff0c;这取决于您是否有足够的时间来仔细研究一下java.lang.Object类。 就在java.lang.Object本身中&#xff0c;有一个名为finalize&#xff08;&…

C++ constexpr变量和constexpr函数

constexpr 类型变量必须用常量表达式或 constexpr 函数来初始化&#xff1a; constexpr int a10;   constexpr int ba10;   constexpr int cd();  //当 d()为一个 constexpr 函数时才可以 constexpr 函数的形参和返回值都只能是字面型类型&#xff0c;且只能有一条 retur…

Zookeeper实现注册与发现

1.Zookeeper的数据模型 (1) Zookeeper的数据模型&#xff0c;类似于树形结构&#xff1a; (2) Zookeeper的每一个节点成为称为Znode&#xff0c;主要用来存储数据。 data : 存储数据信息。acl : 记录Znode的访问权限。child : 当前节点的子节点引用。stat &#xff1a;包含Zn…

class 命名规范

本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 注: 文章摘自 penggelies07- 简书, super晴天 - CSDN 常见class关键词 布局类&#xff1a;header, footer, container, main, content, aside, page, section 包裹类&am…

web策略类游戏开发(四)一个可以承载万人在线的架构

web策略类游戏开发(四)一个可以承载万人在线的架构 Webgame现在已经开始需要进入大统一服务器时代&#xff0c;每个游戏区域容纳的玩家数量将从现在的几万人发展到几十万人&#xff0c;因此在新的背景下&#xff0c;webgame如何处理大量用户的请求将成为问题。目前一台asp.net做…

htc g7 android 4.4,HTC G7刷机,从WM手机刷到了安卓,开启了新的刷机体验....

2011.0914.晚上22&#xff1a;00使用2010的教程刷机&#xff0c;降级时黑屏。使用老的教程&#xff0c;一开始降级从094降到0.83(2010技术)黑屏&#xff0c;但是未板砖&#xff0c;还有开机声音&#xff0c;无法控制机器。没办法&#xff0c;只能使用RUU技术&#xff0c;window…

Java的编年史和低延迟

总览 我正在看Typesafe的Rolan Kuhn在介绍反应流方面的出色演讲&#xff0c;乍一看似乎与《纪事报》有一些相似的目标&#xff0c;但是当您深入研究细节时&#xff0c;对我来说显然有一些关键假设是根本不同。 关键假设 《纪事》设计的主要假设是 低延迟是您的问题&#xff0c…

复制物料时不复制安全库存

1.打开bos&#xff0c;选择物料-功能控制 2.把允许复制去掉 转载于:https://www.cnblogs.com/RogerLu/p/10441588.html

CSS实现水平垂直居中

1、需求分析 子元素在父元素中水平垂直居中 2、技术分析 基础的css、html 3、详细分析 如图: 3.1 HTML部分 如图所示&#xff0c;大边框内包含一个小边框两部分&#xff0c;设置一个父元素div和一个子元素div。 <div class"container">父元素<div class…

2008/5/5

go haywire 非常生气Imagination is the source of creation. 想象是创造之源.转载于:https://www.cnblogs.com/fishert/archive/2008/05/06/1184243.html