首页 > 其他分享 >tomcat CookieFilter类找不到

tomcat CookieFilter类找不到

时间:2024-04-05 19:56:24浏览次数:36  
标签:tomcat License CookieFilter filter sessionId 不到 input String

在package org.apache.catalina.filters包中新建类 CookieFilter,内容如下:

package org.apache.catalina.filters;


/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.Locale;
import java.util.StringTokenizer;

/**
 * Processes a cookie header and attempts to obfuscate any cookie values that
 * represent session IDs from other web applications. Since session cookie names
 * are configurable, as are session ID lengths, this filter is not expected to
 * be 100% effective.
 *
 * It is required that the examples web application is removed in security
 * conscious environments as documented in the Security How-To. This filter is
 * intended to reduce the impact of failing to follow that advice. A failure by
 * this filter to obfuscate a session ID or similar value is not a security
 * vulnerability. In such instances the vulnerability is the failure to remove
 * the examples web application.
 */
public class CookieFilter {

    private static final String OBFUSCATED = "[obfuscated]";

    private CookieFilter() {
        // Hide default constructor
    }

    public static String filter(String cookieHeader, String sessionId) {

        StringBuilder sb = new StringBuilder(cookieHeader.length());

        // Cookie name value pairs are ';' separated.
        // Session IDs don't use ; in the value so don't worry about quoted
        // values that contain ;
        StringTokenizer st = new StringTokenizer(cookieHeader, ";");

        boolean first = true;
        while (st.hasMoreTokens()) {
            if (first) {
                first = false;
            } else {
                sb.append(';');
            }
            sb.append(filterNameValuePair(st.nextToken(), sessionId));
        }


        return sb.toString();
    }

    private static String filterNameValuePair(String input, String sessionId) {
        int i = input.indexOf('=');
        if (i == -1) {
            return input;
        }
        String name = input.substring(0, i);
        String value = input.substring(i + 1, input.length());

        return name + "=" + filter(name, value, sessionId);
    }

    public static String filter(String cookieName, String cookieValue, String sessionId) {
        if (cookieName.toLowerCase(Locale.ENGLISH).contains("jsessionid") &&
                (sessionId == null || !cookieValue.contains(sessionId))) {
            cookieValue = OBFUSCATED;
        }

        return cookieValue;
    }
}

 

标签:tomcat,License,CookieFilter,filter,sessionId,不到,input,String
From: https://www.cnblogs.com/r1-12king/p/18116105

相关文章

  • Tomcat使用的设计模式
    目录门面模式(FacadePattern):观察者模式(ObserverPattern):工厂模式(FactoryPattern):策略模式(StrategyPattern):Tomcat中使用了多种设计模式,以下是主要设计模式:门面模式(FacadePattern):门面模式用于封装子系统的具体实现,为外部系统提供统一的外观类。在Tomcat中,门面模式的应......
  • 字节二面:为什么SpringBoot的 jar 可以直接运行?我说因为内嵌了Tomcat容器,他让我出门左
    引言在传统的Java应用程序开发和部署场景中,开发者往往需要经历一系列复杂的步骤才能将应用成功部署到生产环境。例如,对于基于Servlet规范的JavaWeb应用,开发完成后通常会被打包成WAR格式,然后部署到像ApacheTomcat、Jetty这样的Web容器中。这一过程中,不仅要管理应用本身的编译产......
  • 不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式
    大家好,我是知微!学习过单片机的小伙伴对GPIO肯定不陌生,GPIO(generalpurposeinputoutput)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。在STM32中,GPIO的工作模式被细分为8种,对于初学者来讲,要理解它们可太难了!诶诶诶,给个机会,先别急着退出哈!这不是有我在呢,跟着这篇文......
  • idea建多级目录出现问题,报错找不到xml文件,如何解决?
    ......
  • ROS 功能包之间的头文件包含找不到文件问题
    参考CMakeList生成预编译文件 在评论区看到答案:)C/C++程序编译链接过程环境系统:ubuntu20编译器:gcc问题功能包ProjA使用了另一个功能包ProjB中定义的类。ProjB单独编译是正常的,但是 ProjA编译时候报错,显示有ProjB的头文件找不到。背景项目中使用第三方......
  • ImportError: DLL load failed while importing _cext: 找不到指定的模块
    网上搜索说,这个错误表明Python在尝试导入名为_cext的扩展模块时失败了,这通常是因为它依赖的某些动态链接库(DLL)文件无法被正确加载。这可能是因为相应的DLL文件不存在于预期的位置,或者系统缺少运行该DLL所必需的其他依赖项。在一个帖子中看到通过pipinstallmsvc-runtime可以即......
  • 关于Unity Asset Store搜不到画线插件Vectrosity的问题(附带最新版本下载)
    Vectrosity是一个很好用的画线的插件,可以画出2D,3D,贝塞尔,圆,椭圆等各种线条图案,还可以给线段添加纹理,进行碰撞检查等,如果有多段线段的话,还能够检测到当前点击的是那段线段,我在项目中一直用的它,感觉还是挺稳定挺好用的。最近要开发另一个项目了,也要画线,就想着还用Vectrosity,去Asset......
  • Tomcat内存马分析
    前言自己简单搭建一个Tomcat项目,IDEA里选择JavaEE,勾上web就行了加个依赖(这样就能找到三个Context了:<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>8.5.16</version></dependency&......
  • java安装(找不到jre还苦恼的同志们)-彗星,请放弃jre
    我写了那么多的文章,自我感觉python爬虫是最有含金量的一片了。结果Java安装阅读量始终是第一位,哭笑不得啊。2023.06.11改名博文名称为java安装(找不到jre还苦恼的同志们)-彗星,请放弃jre。jre就是一道彗星,从java的生涯已经结束了,大家不必纠结。看这个文章的人大部分都是刚刚入......
  • OZON插件,找不到免费还好用的?
        在快节奏的现代生活中,人们越来越倾向于在电子商务平台上购物,以节省时间和精力。OZON作为一家知名的电商平台,为用户提供了丰富多样的商品选择和便捷的购物体验。插件作为电商平台的传统软件,已经存在多年了,配合各种软件使用,可以事半功倍,我们废话不多说,直接进入今天的......