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用户以及处理页面缓存问题,确保系统的安全性。 首先,我们面对的是一个常见的信息安全问题:未授权用户可以直接通过在浏览器地址栏输入URL进入系统。为了解决这个问题,我们...
为避免Session滥用,应合理设计Session的使用,比如使用Session监听器来监听Session的创建和销毁,或者使用Filter进行Session的验证和清理。 8. **会话固定攻击** Session技术的一个安全隐患是会话固定攻击,攻击...
在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后处理。这种机制允许开发者在不修改目标资源代码的情况下增加额外...
在"java自学===Filter类的应用,验证用户"这个话题中,我们关注的是使用Filter来检查用户是否已经登录,以确保他们有权访问特定的资源。这通常通过以下步骤完成: 1. 检查请求中的认证信息:例如,从HTTP请求头中...
总之,这个"Java Web用户只能在一处登陆源码"项目涉及到Web应用的身份验证、会话管理、安全机制以及分布式环境下的SSO实现。通过学习和研究这个源码,开发者可以深入理解Java Web应用的登录流程以及SSO的相关技术。
- **安全性**:Java提供了多层次的安全机制,能够有效防止恶意代码攻击。 - **高性能**:通过JIT编译器和多线程支持,Java程序能够实现高效的执行性能。 - **丰富的API**:Java提供了丰富的类库,涵盖了网络、图形...
7. **Struts或Spring MVC**: 这两个是流行的MVC框架,可能用于构建系统的控制层,提供动作调度和处理请求的机制。 8. **Ajax与jQuery**: 为了增强用户体验,项目可能使用了Ajax异步技术,通过JavaScript与服务器...
- **实践操作**:通过实际编码,加深对Java Web框架下监听和过滤机制的理解,提升项目开发能力。 综上所述,本次实验不仅涉及理论学习,更强调动手实践,是Java Web开发者掌握核心技能的重要环节。
在Java的Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前或响应离开容器之后进行处理。本文将深入探讨Java中过滤器的几种使用方法及其应用场景,以帮助...
Spring框架结合Redis作为Session存储机制,能够有效地解决这个问题。以下将详细介绍如何通过Spring和Redis实现Session共享的步骤。 1. **理解Session共享需求**: 分布式环境下,用户可能会在多个服务器之间跳转,...
以上只是部分Java Web开发中常见的模块和知识点,实际项目中可能还会涉及更多的技术,如缓存管理、任务调度、搜索引擎集成等。理解并熟练运用这些模块的源代码,将对提升开发效率和代码质量大有裨益。
Java过滤器(Filter)是Java Web开发中的一个重要概念,它属于Servlet技术的一部分,主要用于处理HTTP请求和响应。在给定的文件中,提到了四个有用的Java过滤器实例,分别是: 1. **使浏览器不缓存页面的过滤器**:...
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了认证、授权、加密和会话管理功能,简化了开发人员处理安全问题的过程。本项目是一个基于 Spring Boot 的 Shiro 全流程示例,涵盖了从用户登录认证到权限...
Filter是Java Servlet API中的一部分,它允许我们在请求到达目标Servlet或JSP之前对其进行拦截和处理,也可以在响应离开服务器之前进行操作。在用户登录验证场景中,Filter通常用来检查请求是否包含有效的登录信息,...
- 购物车功能可能涉及到会话(Session)管理,Servlet可以创建和管理用户的会话,保存用户选择的商品,直到用户完成购买。 6. **数据库操作** - 商品信息、订单数据等通常存储在数据库中。Servlet可以通过JDBC...
### Java最新面试宝典知识点概览 #### 一、Java基础 **1.1 Collection和Map** - **知识点概述:** - 掌握`Collection`接口及其子接口`List`、`Set`的不同之处。 - 理解`Map`接口与`Collection`接口的主要区别。 ...
在实际集成过程中,我们需要配置Shiro的 Realm(认证和授权),SessionManager(管理session),CacheManager(使用Redis作为缓存),以及Filter Chain定义,确保请求经过正确的过滤器链。同时,需要在每个节点...
5. **Web应用配置**:在web应用的`WEB-INF/web.xml`文件中,使用`<filter>`和`<filter-mapping>`来启用Spring Session: ```xml <filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-...
总的来说,Java中实现两周内自动登录的关键在于正确管理和使用Cookie以及Session ID。需要注意的是,由于Cookie是在客户端存储的,所以敏感信息(如明文密码)不应放入Cookie,以免安全风险。在实际应用中,通常会对...