关于spring-security(记住密码,CSRF)
注册PersistentTokenRepository
- PersistentTokenRepository实现类
- InMemoryTokenRepositoryImpl基于内存实现
- JdbcTokenRepositoryImpl基于数据库实现
基于内存实现
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public PersistentTokenRepository persistentTokenRepository() { PersistentTokenRepository tokenRepository = new InMemoryTokenRepositoryImpl(); return tokenRepository; } }
修改安全配置类
http.rememberMe().tokenRepository(persistentTokenRepository()) .tokenValiditySeconds(120)//设置有效时长,单位秒 .userDetailsService(userDetailsService)
页面添加记住我复选框
记住我:
<input type="checkbox"name="remember-me"title="记住密码"/><br/>
此处:name 属性值必须位remember-me.不能改为其他值
CSRF 理解(默认开启)
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。
由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。
这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
从Spring Security 4.0开始,默认情况下会启用CSRF保护,以防止CSRF攻击应用程序,Spring Security CSRF会针对PATCH,POST,PUT和DELETE方法进行防护。
解决方案
检查Referer字段
Referer字段通常由浏览器在HTTP请求中发送,告诉服务器用户是从哪个页面链接过来的。然而,由于Referer字段可以被用户修改或禁用,因此不能完全信任它来确保请求是从指定页面发起的。
以下是检查Referer字段的一些常见缺点:
- 用户可以修改Referer字段:一些用户可能会修改HTTP请求头中的Referer字段,以试图绕过安全检查。
- Referer字段可能被缓存:某些代理服务器或缓存服务器可能会缓存Referer字段
CSRFToken
由于CSRF 是开启的所以我们在登陆是未检出token,则被认定为csrf攻击,报异常
security实现
在登录页面添加一个隐藏域:
<input type="hidden"th:if="${_csrf}!=null" th:value="${_csrf.token}" name="_csrf"/>
关闭安全配置的类中的csrf
// http.csrf().disable();
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
springboot多模块化整合mybatis,mapper自动注入失败问题及解决
这篇文章主要介绍了springboot多模块化整合mybatis,mapper自动注入失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01SpringBoot Redis配置Fastjson进行序列化和反序列化实现
这篇文章主要介绍了SpringBoot Redis配置Fastjson进行序列化和反序列化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10Spring Boot 开发私有即时通信系统(WebSocket)
本文利用Spring Boot作为基础框架,Spring Security作为安全框架,WebSocket作为通信框架,实现点对点聊天和群聊天2017-04-04JDK1.6“新“特性Instrumentation之JavaAgent(推荐)
这篇文章主要介绍了JDK1.6“新“特性Instrumentation之JavaAgent,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08
最新评论