jsessionid的危害及去除解决方案,原文:
http://randomcoder.com/articles/jsessionid-considered-harmful
其实就是加个filter截取所有URL并进行重写:
public class DisableUrlSessionFilter implements Filter {
@Override
public void destroy() {
}
@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();
}
HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(
httpResponse) {
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;
}
};
chain.doFilter(request, wrappedResponse);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
然后是web.xml的配置:
<!--to disable jsessionid in url -->
<filter>
<filter-name>
DisableUrlSessionFilter
</filter-name>
<filter-class>
com.abc.web.filter.DisableUrlSessionFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>DisableUrlSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
在Android开发中,与服务器进行交互是常见的任务,而`jsessionId`是Web应用程序中用于跟踪用户会话的一种机制。本文将详细讲解如何在Android客户端获取`jsessionId`以及如何在后续请求中发送`jsessionId`,以保持...
它通常被附加到URL后面,以便在页面重定向或刷新时保持会话状态。然而,这种方式存在一些问题: 1. **安全性**:`jsessionid`暴露在URL中可能带来安全风险,如会话劫持或跨站脚本攻击(XSS)。攻击者可以通过获取...
- **用户体验提升:**去除URL中的`jsessionId`可以使URL更加简洁美观,提升用户体验。 - **兼容性改进:**有些客户端或中间件可能不支持URL中的`jsessionId`,通过过滤可以提高系统的兼容性。 #### 五、总结 `...
### Tomcat中修改JSessionID在Cookie中的名称 在Tomcat服务器中,默认情况下,用于传递会话标识(即JSessionID)的Cookie名称为“JSESSIONID”。有时,出于安全考虑或其他需求,我们可能需要自定义这个名称。本文将...
重定义URL 使其直接进去网页 不用登录 用于:邮件链接直接进入网站
jsessionid=1234 ``` 这种方式虽然简单,但在安全性方面存在一定的风险。 #### 八、URL重定向 **URL重定向**用于处理无效的URL或不再存在的资源。例如,可以使用Apache的`ErrorDocument`指令将404错误页面重定向...
Cookie 路径属性安全设置 ...然而,在某些情况下,Cookie 中的路径属性可能会泄露项目路径,导致安全风险。本文将介绍如何解决 Cookie 路径属性暴露问题。 Cookie 路径属性的危险 在服务器中的项目中,如果 Cookie...
// 解析cookieHeader,例如:JSESSIONID=123456; Path=/; HttpOnly // 使用CookieManager的CookiePolicy接受所有Cookie cookieManager.getCookieStore().add(null, parseCookie(cookieHeader)); } ``` 4. 共享...
例如,将`JSESSIONID`添加到URL后面,如`http://example.com/?JSESSIONID=abc123`。 4. **源码解析**: - 博文链接中的“1973323”可能是博客文章的ID,访问这个链接可以查看具体的实现细节。源码中可能会包含如何...
这意味着服务器会将`Session ID`附加到URL路径后面,使得即使没有`Cookie`,服务器也能通过解析URL来识别用户`Session`。`HttpServletResponse.encodeURL(String url)`方法用于实现这个过程。 - **URL重写与Cookie...
这里,`$cookie_JSESSIONID`表示根据用户cookie中的JSESSIONID来确定服务器,`consistent`则确保哈希算法的稳定性。 **session共享的优势** 1. **高可用性**: Redis提供了复制和哨兵监控等机制,增强了session数据...
经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的...
一.服务器端获取Session对象依赖于...Java中给出了再所有的路径的后面拼接JSESSIONID信息。 在 Session1Servlet中,使用response.encodeURL(url) 对超链接路径拼接 session的唯一标识 // 当点击 的时候跳转到 sess
因此,但你刷新上一次的请求时,页面会输出一个名为 JSESSIONID 的 Cookie,后面就是相应的 Cookie 值,也就是本次“会话”的 SessionID,但你再次刷新此页面时会得到相同的输出,因为在一次“会话”中,请求信息...
避免可能会绕过CVE-2015-5211对RFD攻击的保护,具体取决于通过使用jsessionid路径参数使用的浏览器。
关于2010那洞 我就不说了 2011那个也不说了 (这两成功率 还是顶高的) s2-013 实战 鸡肋 (要不然这工具也不会丢出来了 最好你自己打个环境来测一下 免得你以为...inurl: *.jsp;jsessionid 能不能搞到 纯属看你人品了
jsessionid=...”,使得浏览器在每次请求时都将Session ID包含在URL中。表单隐藏字段则是服务器在表单中添加一个隐藏的字段,字段名通常为“jsessionid”,值为Session ID。虽然表单隐藏字段已较少使用,但在某些旧...
- 在每个发送给客户端的URL后面加上会话标识符。 - 客户端每次请求时,都会携带带有会话标识符的URL。 - 服务器端解析URL获取会话标识符,进而获取对应的会话信息。 ##### 3.3 使用隐藏的表单域进行会话跟踪 **...
具体来说,服务器会在响应中返回的URL后面加上`;JSESSIONID=xxxxx`这样的参数,从而在客户端请求时携带Session ID。 ```java String encodedUrl = response.encodeURL("/somePage.jsp"); ``` 上述代码中,如果...
Servlet容器负责为每个HttpSession生成唯一的标识,通常通过JSESSIONID实现,这个标识可以通过cookie或URL参数的形式在客户端和服务器之间传递。HttpSession的优点在于它可以存储大量数据,且数据不会暴露给客户端。...