`
EJB_wawa
  • 浏览: 108983 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理

阅读更多
WEB的信息安全隐患之一:

未授权用户通过直接在IE中输入URL直接登录系统

解决办法:

通过配置filter过滤无效用户的连接请求.

WEB的信息安全隐患之二:

合法用户"注销"后,在未关闭浏览器的情况下,点击浏览器"后退"按钮,可从与本地页面缓存中读取数据,绕过了服务端filter过滤.

解决办法:

在必要的页面(包含敏感信息) 设定页面缓存限制.

也可以把上面两步组合在一个,通过同一个filter实现.具体如下:

1.配置filter(web.xml)

......

<filter>
   <filter-name>Authentication</filter-name> <!-- Authentication过滤器别名 -->
   <filter-class>com.mycompany.myweb.management.util.AuthenticationFilter</filter-class> <!-- 过滤器Authentication指向的具体类 -->
   <init-param>
    <param-name>onError</param-name> <!-- 过滤器初始化参数配置 -->
    <param-value>/Logon.do</param-value> <!-- 这里指定无效用户跳转方向 -->
   </init-param>
</filter>
<filter-mapping>
<filter-name>Authentication</filter-name>
<url-pattern>/management/*</url-pattern> <!-- management/*是要过滤的文件的位置,表示过滤management文件夹下的所内容。 -->
</filter-mapping>
<filter-mapping>
<filter-name>Authentication</filter-name>
<url-pattern>/Main.do</url-pattern> <!-- Main.do/*是要过滤的请求,表示过滤此请求指定的页面的所内容。 -->
</filter-mapping>

......

AuthenticationFilter过滤器实现类:

package com.mycompany.myweb.management.util;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.struts.Globals;
import org.apache.struts.action.*;

public class AuthenticationFilter implements Filter {//一定要使用Filter接口
private FilterConfig filterConfig;

private String onErrorUrl;

public void init(FilterConfig config) throws ServletException {
filterConfig = config;
nErrorUrl = filterConfig.getInitParameter("onError");
if (onErrorUrl == null || "".equals(onErrorUrl)) {
   nErrorUrl = "onError";
}
}

public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain next) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpSession httpSession = httpRequest.getSession();
/**
* @author justin ray
* @see 页面缓存设定
* <br>确保浏览器不缓存页面数据
*/

httpResponse.setHeader("Cache-Control","no-cache");
httpResponse.setHeader("Cache-Control","no-store");
httpResponse.setDateHeader("Expires", 0);
httpResponse.setHeader("Pragma","no-cache");

/**
* @author justin ray
* @see 过滤未登录用户无效请求
* <br>未登录用户请求跳转到/Logon.do
*/
if (httpSession.getAttribute("ePAccountInfo") == null) {
   ActionErrors errors = new ActionErrors();
   errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("没有登录"));
   httpRequest.setAttribute(Globals.ERROR_KEY, errors);
   httpRequest.getRequestDispatcher(onErrorUrl).forward(httpRequest,
     httpResponse);
} else
   next.doFilter(request, response);
}

public void destroy() {
}

}
分享到:
评论

相关推荐

    使用filter验证session用户和页面缓存问题处理

    本文将探讨如何使用filter来验证session用户以及处理页面缓存问题,确保系统的安全性。 首先,我们面对的是一个常见的信息安全问题:未授权用户可以直接通过在浏览器地址栏输入URL进入系统。为了解决这个问题,我们...

    在Java的web编程中关于session技术的使用详解

    为避免Session滥用,应合理设计Session的使用,比如使用Session监听器来监听Session的创建和销毁,或者使用Filter进行Session的验证和清理。 8. **会话固定攻击** Session技术的一个安全隐患是会话固定攻击,攻击...

    java中filter的用法(过滤器)

    在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后处理。这种机制允许开发者在不修改目标资源代码的情况下增加额外...

    java自学===Filter类的应用,验证用户

    在"java自学===Filter类的应用,验证用户"这个话题中,我们关注的是使用Filter来检查用户是否已经登录,以确保他们有权访问特定的资源。这通常通过以下步骤完成: 1. 检查请求中的认证信息:例如,从HTTP请求头中...

    java_web 用户只能在一处登陆源码

    总之,这个"Java Web用户只能在一处登陆源码"项目涉及到Web应用的身份验证、会话管理、安全机制以及分布式环境下的SSO实现。通过学习和研究这个源码,开发者可以深入理解Java Web应用的登录流程以及SSO的相关技术。

    Java Web开发内幕

    - **安全性**:Java提供了多层次的安全机制,能够有效防止恶意代码攻击。 - **高性能**:通过JIT编译器和多线程支持,Java程序能够实现高效的执行性能。 - **丰富的API**:Java提供了丰富的类库,涵盖了网络、图形...

    Java web项目-新奥家电连锁网络系统

    7. **Struts或Spring MVC**: 这两个是流行的MVC框架,可能用于构建系统的控制层,提供动作调度和处理请求的机制。 8. **Ajax与jQuery**: 为了增强用户体验,项目可能使用了Ajax异步技术,通过JavaScript与服务器...

    java Web 程序设计实验报告 内容详细 一看就懂

    - **实践操作**:通过实际编码,加深对Java Web框架下监听和过滤机制的理解,提升项目开发能力。 综上所述,本次实验不仅涉及理论学习,更强调动手实践,是Java Web开发者掌握核心技能的重要环节。

    filter的使用 java 过滤器的几种使用方法

    在Java的Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前或响应离开容器之后进行处理。本文将深入探讨Java中过滤器的几种使用方法及其应用场景,以帮助...

    spring redis session共享实现步骤

    Spring框架结合Redis作为Session存储机制,能够有效地解决这个问题。以下将详细介绍如何通过Spring和Redis实现Session共享的步骤。 1. **理解Session共享需求**: 分布式环境下,用户可能会在多个服务器之间跳转,...

    java web开发常用模块源代码

    以上只是部分Java Web开发中常见的模块和知识点,实际项目中可能还会涉及更多的技术,如缓存管理、任务调度、搜索引擎集成等。理解并熟练运用这些模块的源代码,将对提升开发效率和代码质量大有裨益。

    Filter-四个有用的Java过滤器

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它属于Servlet技术的一部分,主要用于处理HTTP请求和响应。在给定的文件中,提到了四个有用的Java过滤器实例,分别是: 1. **使浏览器不缓存页面的过滤器**:...

    shiro的全流程demo,世界shiro在spring中认证、授权流程,自定义授权类型,分布式session、授权缓存的实现

    Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员处理安全问题的过程。本项目是一个基于 Spring Boot 的 Shiro 全流程示例,涵盖了从用户登录认证到权限...

    检验用户登录信息(使有Filter,最终版)

    Filter是Java Servlet API中的一部分,它允许我们在请求到达目标Servlet或JSP之前对其进行拦截和处理,也可以在响应离开服务器之前进行操作。在用户登录验证场景中,Filter通常用来检查请求是否包含有效的登录信息,...

    JAVA网上商城-servlet运用

    - 购物车功能可能涉及到会话(Session)管理,Servlet可以创建和管理用户的会话,保存用户选择的商品,直到用户完成购买。 6. **数据库操作** - 商品信息、订单数据等通常存储在数据库中。Servlet可以通过JDBC...

    java最新面试宝典

    ### Java最新面试宝典知识点概览 #### 一、Java基础 **1.1 Collection和Map** - **知识点概述:** - 掌握`Collection`接口及其子接口`List`、`Set`的不同之处。 - 理解`Map`接口与`Collection`接口的主要区别。 ...

    SSM项目集成shiro搭建session共享

    在实际集成过程中,我们需要配置Shiro的 Realm(认证和授权),SessionManager(管理session),CacheManager(使用Redis作为缓存),以及Filter Chain定义,确保请求经过正确的过滤器链。同时,需要在每个节点...

    tomcat7利用redis做session共享所需jar包

    5. **Web应用配置**:在web应用的`WEB-INF/web.xml`文件中,使用`&lt;filter&gt;`和`&lt;filter-mapping&gt;`来启用Spring Session: ```xml &lt;filter&gt; &lt;filter-name&gt;springSessionRepositoryFilter&lt;/filter-name&gt; &lt;filter-...

    java操作cookie-实现两周内自动登录.doc

    总的来说,Java中实现两周内自动登录的关键在于正确管理和使用Cookie以及Session ID。需要注意的是,由于Cookie是在客户端存储的,所以敏感信息(如明文密码)不应放入Cookie,以免安全风险。在实际应用中,通常会对...

Global site tag (gtag.js) - Google Analytics