`

Spring Security 和 Tomcat 安全实践

阅读更多

 

一、注册密码复杂度
通过js判断,找到一简单好用代码以供参考:
function   CheckPassword(password)
{
          var   strength =   new   Array();
       strength[0] =   "Blank" ;
       strength[1] =   "Very Weak" ;
       strength[2] =   "Weak" ;
       strength[3] =   "Medium" ;
       strength[4] =   "Strong" ;
       strength[5] =   "Very Strong" ;

          var   score = 1;

          if   (password.length   <   1)
                 return   0;
                 //return strength[0];

          if   (password.length   <   4)
                 return   1;
                 //return strength[1];

          if   (password.length >= 8)
              score++;
          if (password.length >= 10)
              score++;
          if   (password.match(/\d+/))
              score++;
          if   (password.match(/[a -   z]/) &&
              password.matc   h(/[A - Z]/))
              score+   +;
          if   (password.match(/.[!,@,#,$,%,^,&,*,?,_,~, - ,£,(,)]/))
              score++;

          return strength[score];
}

二、失败登录处理
自定义FORM_LOGIN_FILTER,重载UsernamePasswordAuthenticationFilter的attemptAuthentication方法,判断用户登录失败信息,进行用户锁定等。
https通讯
配置 <intercept-url>标签的requires-channel属性,例如:
<http>
    <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https/>
    <intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/>
  </http>

三、密码MD5密文保存
配置如下:
<!-- 密码编码 -->
      < b:bean   id = "passwordEncoder"   class = "org.springframework.security.authentication.encoding.Md5PasswordEncoder"   ></ b:bean >
   
      <!-- 认证管理 -->
      < authentication-manager   alias = "am" >
          < authentication-provider >
             <!-- <password-encoder hash="md5"/>  -->
             < password-encoder   ref =   "passwordEncoder"   >
                    < salt-source   user-property = "username"   />
                   </ password-encoder >
          
             < jdbc-user-service   data-source-ref = "dataSource"   />
          </ authentication-provider >
      </ authentication-manager   >

四、会话超时
在web.xml配置:
<!-- 设置session 超时时间为20分钟  -->
          < session-config >
           < session-timeout >   20 </   session-timeout >
          </ session-config >

五、并发会话控制
配置如下:
< b:bean   id =   "sas"   class   =
          "org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy"   >
           < b:constructor-arg   name =   "sessionRegistry"   ref   = "sessionRegistry"   />
           < b:property   name =   "maximumSessions"   value   = "1"   />
           < b:property   name =   "exceptionIfMaximumExceeded"   value = "true" ></   b:property >
           < b:property   name =   "alwaysCreateSession"   value   = "true" ></   b:property >
          </ b:bean >
最大会话数1,超出报错,总是创建新会话

六、跨站脚步攻击
编写过滤程序,对参数和header进行字符过滤。配置如下:
      <!-- Avoiding XSS -->
    < filter   >
      < filter-name   > XssFilter   </ filter-name >
      < filter-class   > sp.common.XssFilter   </ filter-class >
    </ filter   >   
    < filter-mapping   >
      < filter-name   > XssFilter   </ filter-name >
      < url-pattern   > /*   </ url-pattern >                 
    </ filter-mapping   >

七、禁用WebDav等不安全Http方法
修改web.xml
< web-resource-collection >
               < url-pattern >   /* </   url-pattern >
               < http-method >   PUT </   http-method >
               < http-method >   DELETE </   http-method >
               < http-method >   HEAD </   http-method >
               < http-method >   OPTIONS </   http-method >
               < http-method >   TRACE </   http-method >
           </ web-resource-collection >
0
0
分享到:
评论

相关推荐

    Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager.zip

    本项目“Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager”整合了Spring Boot、Spring Security、Spring Session、Redis、Mybatis-Plus以及Swagger等技术,旨在构建一个强大的、安全的、具有...

    spring security 项目配置源码

    这个"Spring Security 项目配置源码"提供了学习和实践Spring Security的宝贵机会,可以帮助开发者深入理解Spring Security的内部工作原理,以及如何在实际项目中有效地应用它。通过逐步研究和运行项目,你可以掌握...

    java+spring-boot-jwt + spring security集成实战项目.zip

    在本项目中,我们主要探讨的是如何将Java与Spring Boot框架相结合,利用JWT(JSON Web Token)和Spring Security来构建一个安全的Web应用程序。这个实战项目涵盖了从基础概念到实际应用的完整流程,旨在帮助开发者...

    SpringBoot + SpringSecurity + JPA 实现用户角色权限登录认证

    6. **security-jpa**:此文件名可能是某个模块或者配置文件,可能包含了与SpringSecurity和JPA整合的具体实现,比如用户Repository、安全配置类等。在项目中,它可能负责定义如何使用JPA来操作用户角色和权限数据,...

    Spring Security集成CAS客户端实例

    在Web应用中,安全是至关重要的,Spring Security和CAS(Central Authentication Service)是两种广泛使用的安全框架。本实例旨在展示如何将Spring Security与CAS结合,实现一个高效的单点登录(Single Sign-On,SSO...

    Spring Security 安全权限管理手册.pdf

    - 描述如何将配置的过滤器和命名空间应用到实际项目中,构建一个完整的Spring Security安全体系。 - **1.4 运行示例** - 提供一个具体的示例,演示如何运行配置好的Spring Security项目。 **2. 使用数据库管理...

    springboot+springsecurity入门

    SpringSecurity是Spring生态系统的安全模块,用于处理身份验证和授权。它提供了一套强大且高度可定制的机制,以保护Java应用免受各种攻击,例如:SQL注入、XSS、CSRF等。SpringSecurity的核心组件包括:过滤器链、...

    spring boot、 mybaits、 spring security、 redis整合

    Spring Security是一个强大的安全框架,提供认证、授权和安全配置等功能,用于保护Web应用程序。它为Spring Boot提供了丰富的安全特性,包括用户认证、角色授权、访问控制、会话管理等。Spring Security可以很容易地...

    spring security3动态权限

    struts2 + spring3 + hibernate3 + spring security3 + mysql + tomcat sys_users;sys_roles;sys_authorities;sys_resources;sys_users_roles;sys_roles_authorities;sys_authorities_resources; PS:此项目运行不...

    SpringBoot集成Spring Security登录管理 添加 session 共享【完整源码+数据库】

    我们将基于给定的标签——SpringBoot、SpringSecurity、mysql、session共享和idea来构建一个完整的示例。 首先,SpringBoot是一个轻量级的Java框架,它简化了创建独立的、生产级别的基于Spring的应用程序。通过内置...

    SpringSecurity_day03.pdf

    Spring Security 是一个功能强大的安全框架,它为基于 Java 的应用程序提供了身份验证(authentication)、授权(authorization)、CSRF 保护、登录和注销功能等功能。它能帮助开发者快速地为应用增加安全特性。 ##...

    单点登录实现 Spring_security+CAS

    7. **安全实践**:理解SSO的安全隐患,如会话固定攻击(Session Fixation)、CSRF(跨站请求伪造)等,以及如何通过Spring Security和CAS的配置来防范这些攻击。 8. **性能优化**:考虑在高并发场景下的性能问题,...

    Spring Security3

    ### Spring Security3 相关知识点概述 #### 第一章:一个不安全应用的剖析 **安全审计** - **目的**:识别系统中的安全隐患...无论是基础的安全配置还是高级的扩展功能,Spring Security都能满足各种复杂的安全需求。

    springboot+springSecurity的Demo实例

    SpringBoot和SpringSecurity是Java开发领域中两个非常重要的框架,它们在构建现代Web应用程序时起着关键作用。SpringBoot简化了Spring应用的初始搭建以及开发过程,而SpringSecurity则为我们的应用提供了强大的安全...

    全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap

    **Spring Security** 是Spring框架的一个子项目,专注于提供身份验证和授权功能。它可以保护你的应用程序免受恶意访问,支持各种认证和授权机制,包括HTTP基本认证、OAuth2、JWT等。 **MyBatis** 是一个优秀的持久...

    spring security 参考手册中文版

    12.1设置MockMvc和Spring Security 104 12.2 SecurityMockMvcRequestPostProcessors 105 12.2.1使用CSRF保护进行测试 105 12.2.2在Spring MVC测试中以用户身份运行测试 106 12.2.3使用RequestPostProcessor在Spring ...

    Spring-Boot1.52 SpringSecurity4 Spring Data Jpa 整合例子

    ### Spring Boot 1.5.2、Spring Security 4 与 Spring Data JPA 整合实践 #### 一、项目背景及目标 本项目旨在通过一个具体的案例来演示如何将 Spring Boot 1.5.2、Spring Security 4 以及 Spring Data JPA 进行...

    统一安全认证(基于Spring Security 3)

    Java语言开发的统一角色访问控制系统(Unified Role Access Control System),基于Spring Security 3实现的权限控制系统 程序框架版本说明:Spring MVC 3.0.6 + Spring Security 3.1.3 + Hibernate 3.6.10 运行...

    SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa

    在这个项目中,SpringBoot作为基础框架,Thymeleaf处理视图渲染,WebSocket实现实时通信,Spring Security确保安全,SpringData-Jpa处理数据库操作,MySQL作为数据存储,而Layui则负责提供用户界面。这个组合可以...

Global site tag (gtag.js) - Google Analytics