import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
*
* <p>Title: DisableUrlSessionFilter.java</p>
* <p>Description:去除URL里的jsessionid </p>
* <p>Company: </p>
* @author
* @date
* @version 1.0
*/
public class DisableUrlSessionFilter implements Filter{
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (!(request instanceof HttpServletRequest)) {
chain.doFilter(request, response);
return;
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (httpRequest.isRequestedSessionIdFromURL()) {
HttpSession session = httpRequest.getSession();
if (session != null) session.invalidate();
}
// wrap response to remove URL encoding
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
@Override
public String encodeRedirectUrl(String url) {
return url;
}
public String encodeRedirectURL(String url) {
return url;
}
public String encodeUrl(String url) {
return url;
}
public String encodeURL(String url) {
return url;
}
};
// process next request in chain
chain.doFilter(request, wrappedResponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
然后在web.xml里配置一下
<filter>
<filter-name>jsessionid</filter-name>
<filter-class>
com.cps.interceptor.DisableUrlSessionFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>jsessionid</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
它通常被附加到URL后面,以便在页面重定向或刷新时保持会话状态。然而,这种方式存在一些问题: 1. **安全性**:`jsessionid`暴露在URL中可能带来安全风险,如会话劫持或跨站脚本攻击(XSS)。攻击者可以通过获取...
在Android开发中,与服务器进行交互是常见的任务,而`jsessionId`是Web应用程序中用于跟踪用户会话的一种机制。本文将详细讲解如何在Android客户端获取`jsessionId`以及如何在后续请求中发送`jsessionId`,以保持...
### Tomcat中修改JSessionID在Cookie中的名称 在Tomcat服务器中,默认情况下,用于传递会话标识(即JSessionID)的Cookie名称为“JSESSIONID”。有时,出于安全考虑或其他需求,我们可能需要自定义这个名称。本文将...
重定义URL 使其直接进去网页 不用登录 用于:邮件链接直接进入网站
- **用户体验提升:**去除URL中的`jsessionId`可以使URL更加简洁美观,提升用户体验。 - **兼容性改进:**有些客户端或中间件可能不支持URL中的`jsessionId`,通过过滤可以提高系统的兼容性。 #### 五、总结 `...
Cookie 路径属性安全设置 ...然而,在某些情况下,Cookie 中的路径属性可能会泄露项目路径,导致安全风险。本文将介绍如何解决 Cookie 路径属性暴露问题。 Cookie 路径属性的危险 在服务器中的项目中,如果 Cookie...
例如,将`JSESSIONID`添加到URL后面,如`http://example.com/?JSESSIONID=abc123`。 4. **源码解析**: - 博文链接中的“1973323”可能是博客文章的ID,访问这个链接可以查看具体的实现细节。源码中可能会包含如何...
这里,`$cookie_JSESSIONID`表示根据用户cookie中的JSESSIONID来确定服务器,`consistent`则确保哈希算法的稳定性。 **session共享的优势** 1. **高可用性**: Redis提供了复制和哨兵监控等机制,增强了session数据...
经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的...
避免可能会绕过CVE-2015-5211对RFD攻击的保护,具体取决于通过使用jsessionid路径参数使用的浏览器。
关于2010那洞 我就不说了 2011那个也不说了 (这两成功率 还是顶高的) ...在firefox下会看到 使用了s2 a标签的链接源码是这样的 *.jsp;jsessionid inurl: *.jsp;jsessionid 能不能搞到 纯属看你人品了
一.服务器端获取Session对象依赖于...Java中给出了再所有的路径的后面拼接JSESSIONID信息。 在 Session1Servlet中,使用response.encodeURL(url) 对超链接路径拼接 session的唯一标识 // 当点击 的时候跳转到 sess
Nginx Tomcat 集群的Session 复制,解决了,集群情况下的session复制问题。
// 解析cookieHeader,例如:JSESSIONID=123456; Path=/; HttpOnly // 使用CookieManager的CookiePolicy接受所有Cookie cookieManager.getCookieStore().add(null, parseCookie(cookieHeader)); } ``` 4. 共享...
在IT行业中,HTTP上传是一项常见的任务,特别是在Web开发中,我们经常需要将用户的数据,如文件、图片或视频,从客户端(通常是浏览器)发送到服务器进行处理或存储。... ...这使得服务器能够解析和处理不同类型的输入...
色彩是设计中至关重要的一部分,尤其在网页制作领域。它不仅影响着网站的视觉吸引力,还对用户体验、品牌识别以及信息传达起着关键作用。本文将深入探讨色彩基础,帮助网页制作工作者更好地理解和应用色彩。...
Cookie的英文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器发送给客户的“点心”。服务器可以根据Cookie来跟踪客户状态,这对于需要区别客户的场合(如电子商务)...
这意味着服务器会将`Session ID`附加到URL路径后面,使得即使没有`Cookie`,服务器也能通过解析URL来识别用户`Session`。`HttpServletResponse.encodeURL(String url)`方法用于实现这个过程。 - **URL重写与Cookie...
此外,如果应用CA内有链接直接跳转到应用CB,同样可能导致Session丢失。这种现象的根本原因是Cookie的Name、Domain和Path属性相同,导致两个应用的Cookie互相覆盖。 **二、问题成因** WebLogic Server默认情况下,...
【标题解析】 "一个基于vitamio的视频播放器" 这个标题指出,这是一个使用了Vitamio库的视频播放应用项目。Vitamio是一个专门为Android平台设计的多媒体开发框架,它提供了丰富的视频和音频播放功能,使得开发者能够...