Spring Security
文章平均质量分 84
Spring相关
七号公园的忧伤
点个关注,《不会私信推消息》
展开
-
10 SpringSecurity-跨域请求伪造(CSRF)的防护
一、CSRFCSRF的全称是(Cross Site Request Forgery),可译为跨域请求伪造,是一种利用用户带登录 态的cookie进行安全操作的攻击方式。CSRF实际上并不难防,但常常被系统开发者忽略,从而埋下巨 大的安全隐患。二、攻击过程举个例子,假设你登录了邮箱,正常情况下可以通过某个链接http:xx.mail.com/send可以发送邮件。此时你又访问了别的网站,网站中有黄色广告,点击后广告会请求http:xx.mail.com/send。此时相当于在盗版网站中调用了发送邮原创 2022-02-22 19:56:09 · 4273 阅读 · 0 评论 -
09 SpringSecurity-跨域与CORS
一、认识跨域很多人误认为资源跨域时无法请求,通常情况下时可以正常发起的(部分浏览器存在特例),后端也进行了正常处理,只是在返回时被浏览器拦截,导致响应内容无法使用。可以论证这一点的著名案例就是CSRF跨站攻击。CSRF跨站攻击CSRF(Cross Site Request Forgery) 跨站请求伪造。也被称为One Click Attack和Session Riding,通常缩写为CSRF或XSRF。通常来说就是攻击者盗用你的身份,以你的名义发送恶意请求。注意这是真实的攻击手段:举原创 2022-02-17 12:09:03 · 5160 阅读 · 0 评论 -
08 SpringSecurity-密码加密
文章配套代码:https://gitee.com/lookoutthebush/spring-security-demo一、SpringSecurity加密机制Spring Security内置了密码加密机制,只需使用一个PasswordEncoder接口即可public interface PasswordEncoder { String encode(CharSequence rawPassword); boolean matches(CharSequence rawPa原创 2022-02-11 11:42:38 · 3411 阅读 · 1 评论 -
07 SpringSecurity-会话管理
再2个浏览器中用同一个账号登录就会发现,到现在为止,系统还没有任何会话并发限制。一个账号能多处同时登录不是一个好的策略。一、理解会话会话(session)就是无状态的 HTTP 实现用户状态可维持的一种解决方案。HTTP 本身的无状态 使得用户在与服务器的交互过程中,每个请求之间都没有关联性。这意味着用户的访问没有身份记 录,站点也无法为用户提供个性化的服务。session的诞生解决了这个难题,服务器通过与用户约定每 个请求都携带一个id类的信息,从而让不同请求之间有了关联,而id又可以很方便地绑定原创 2022-02-09 12:04:27 · 1821 阅读 · 0 评论 -
06 SpringSecurity-注销登录功能
退出登录和登录很类似,我们也是修改配置,指定退出登录请求的URL,用户通过访问该路由可以安全地注销其登录状态,包括使 HttpSession失效、清空已配置的Remember-me验证,以及清空SecurityContextHolder,并在注销成功之 后重定向到/login?logout页面。 如有必要,还可以重新配置。一、修改配置类logoutUrl:退出登录功能前端请求的URL。(SpringSecurity实现服务端逻辑)logoutSuccessUrl: 退出登录后要跳转的URL(原创 2022-01-20 11:17:55 · 1408 阅读 · 0 评论 -
05 SpringSecurity-实现自动登录
文章配套代码:https://gitee.com/lookoutthebush/spring-security-demo自动登录是将用户的登录信息保存在用户浏览器的cookie中,当用户下次访问时,自动实现校验 并建立登录态的一种机制。Spring Security提供了两种非常好的令牌:用散列算法加密用户必要的登录信息并生成令牌。 数据库等持久性数据存储机制用的持久化令牌。散列算法在Spring Security中是通过加密几个关键信息实现的:hashInfo = md5Hex(us原创 2022-01-19 18:28:43 · 2992 阅读 · 0 评论 -
04 SpringSecurity实现图形验证码
在验证用户名和密码前,引入辅助验证可有效防范暴力试错,图形验证码就是简单且行有效的一种辅助验证方式。一、使用过滤器实现1.SpringSecurity的过滤器之前的配置: @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() //以下资源允许访问 .antM原创 2022-01-17 17:18:26 · 2553 阅读 · 0 评论 -
03 SpringSecurity-认证与授权
文章配套代码:https://gitee.com/lookoutthebush/spring-security-demo上一章中使用的是默认的安全机制,仅有一个用户,一种角色。实际开发中,我们有很多用户,很多的角色,本章来实现多用户授权。一、资源准备假设我们有2中角色,一种是管理员,有后台操作权限,一种是普通用户,有网站的访问权限。1 新建controller新建2个controller,AdminController和UserController。AdminController中是后台管理员的相原创 2022-01-14 14:34:11 · 2882 阅读 · 0 评论 -
02 SpringSecurity-表单认证
一、创建配置类1.创建configuration包,新建一个WebSecurityConfig类,使其继承WebSecurityConfigurerAdapter2.添加@EnableWebSecurity注解,让Spring发现并注入3.可以看到WebSecurityConfigurerAdapter已经默认声明了一些安全特性 protected void configure(HttpSecurity http) throws Exception { this.logger.de原创 2022-01-13 16:20:02 · 522 阅读 · 0 评论 -
01 SpringSecurity项目搭建
Spring Security 的前身是 Acegi Security,在被收纳为Spring子项目后正式更名为Spring Security。现在Spring Security已经升级到5.6.1.RELEASE版本,加入了原生OAuth2.0框架。(OAuth2具体概念自己搜索)一、创建一个简单的SpringSecurity项目1.创建项目选择Spring Initializr,项目名SpringSecurityDemo, Jdk82.选择依赖SpringBoot2.6.2版原创 2022-01-12 18:41:52 · 681 阅读 · 2 评论