java拦截通过url访问页面,必须通过登录页面访问目标页面

登录页面渗透测试全攻略:从信息侦察到漏洞利用的实战框架 身份认证是Web应用安全的核心防线,其原理在于验证用户身份以授权访问。在技术实现上,登录功能集成了会话管理、密码策略与业务逻辑,其安全强度直接影响整个系统的防护水平。从工程实践角度看,一个脆弱的登录入口可能成为攻击者横向移动和内网漫游的起点,导致数据泄露与权限提升等严重后果。因此,针对登录页面的安全测试,需系统化覆盖信息收集、漏洞挖掘与绕过对抗等关键场景。本文聚焦于登录功能渗透测试的完整战术框架,深入剖析SQL注入、用户名枚举等核心攻击向量,并结合WAF绕过、验证码破解等高级技巧,为构建与突破认证防线提供实 阅读详情

在web.xml中配置过滤:

    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.verification.action.LoginFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>y/form/dealParse.do</url-pattern>
    </filter-mapping>

/*  拦截所有请求

/.do   拦截以“.do”结尾的请求

/index.jsp  拦截指定的jsp

/artery/form/*  拦截该目录下的所有请求

等等

拦截器,拦截请求类:

思路:比较“由登录页面登录后的session中属性值”和“通过url直接访问的session中的属性值”,找到其中不一样的,这就是判断依据。(判断依据可以参考登录逻辑类的代码)

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 主页面拦截,必须从登陆页面进入index
 */
public class LoginFilter implements Filter {
    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest servletRequest,
            ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        HttpSession hs = request.getSession();
        if ("ture".equals(hs.getAttribute("isLogin"))) {//登录后,进入session查看session中的登录状态找到判断依据,
            chain.doFilter(request, response);
            return;
        }

        response.sendRedirect(request.getContextPath() + "/login.jsp");
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {

    }

}

登录逻辑代码:

import javax.crypto.spec.DESedeKeySpec;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.thunisoft.artery.module.config.ArteryConfigUtil;

/**
 * 登录页身份认证
 * @author sunwenhao
 */
public class IdentityVerificationAction extends Action {
    
    private final Log logger = LogFactory.getLog(IdentityVerificationAction.class);
    
    private static final String IS_LOGIN_KEY = "isLogin";//在此处设置了登录的判断属性

    private static final String IS_LOGIN_VALUE = "ture";//在此处设置了登录的属性的判断初始属性
    
    private static final String SEC_STR="Hso2ThxNiSofHso2ThxNiSof";
    
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        
        IdentityBean identityInfo = (IdentityBean)form;
        
        boolean success = verificationInfo(identityInfo);
        
        //如果验证身份成功或者不使用登录页
        if(success) {
            request.getSession().setAttribute(IS_LOGIN_KEY, IS_LOGIN_VALUE);
            return mapping.findForward("success");
        }    
        
        request.setAttribute("msg", "用户名或密码错误");
        
        return mapping.findForward("fail");
    }
    
    /**
     * 是否登录
     * 
     * @param request
     * @param response
     * 
     * @return
     */
    public static boolean isLogin(HttpServletRequest request, HttpServletResponse response) {
        
        String isLogin = (String)request.getSession().getAttribute(IS_LOGIN_KEY);
        
        return IS_LOGIN_VALUE.equals(isLogin);
    }
    
    
    /**
     * 验证登录信息
     * 
     * @param request
     * @param response
     * 
     * @return
     */
    private boolean verificationInfo(IdentityBean identityInfo) {
        
        String user = identityInfo.getUsername();
        String pwd = identityInfo.getPassword();
        
        pwd=CryptUtil.encrypt(CryptFactory.ALGORITHM_3DES, pwd, SEC_STR); 
            
        String username = ArteryConfigUtil.getProperty("username");
        String password = ArteryConfigUtil.getProperty("password");
        
        try {
            if(username.equals(user) && password.equals(pwd)) 
                return true;
            
            return false;
        } catch (Exception e) {
            logger.error("验证用户名和密码时出现错误.");
            return false;
        }
        
    }

}

 

java禁止直接url访问图片 NULL 博文链接:https://lbovinl.iteye.com/blog/2394004 立即下载

相关推荐

解决若依Vue3前后端分离---路由切换时显示白屏

解决基于Vue3若依前后端分离项目中出现的路由正常切换但是就是不显示数据的问题,也就是不发起网络请求的问题。

简单点的博客 1604

登录界面拦截java_java拦截通过url访问页面,必须通过登录页面访问目标页面

在web.xml中配置过滤:LoginFiltercom.verification.action.LoginFilterLoginFiltery/form/dealParse.do/* 拦截所有请求/.do 拦截以“.do”结尾的请求/index.jsp 拦截指定的jsp/artery/form/* 拦截该目录下的所有请求等等拦截器,拦截请求类:思路:比较“由登录页面登录后的sessio...

weixin_35150962的博客 857

Frida Stalker实战:如何用指令级追踪破解OLLVM混淆的AES算法

本文深入探讨了如何使用Frida Stalker进行指令级追踪,破解经过OLLVM混淆的AES算法。通过动态分析技术,逆向工程师可以精准识别控制流平坦化等混淆手段,还原算法逻辑,特别适用于移动安全领域的加密算法分析。文章提供了详细的配置指南、核心机制解析和实战案例,帮助读者掌握对抗高级代码混淆的有效方法。

weixin_29325955的博客 475

springboot 拦截器 配置白名单 放行url

实现接口自定义一个拦截器 重写方法 判断是否登录 注册自定义的拦截器 重写此方法 添加白名单 放行静态资源以及指定controller url 记得加上注解 ...

面朝大海,春暖花开 1万+

ExcelVBA批量添加PDF文件

如图1所示,"BOM-01.xlsx"工作簿中的Sheet1工作表根据B列图号单元格中的内容,在图2所示的文件夹中找到对应的PDF文件,然后嵌入到相应的N列,双击N列中所示的图标,会打开PDF文件,是源文件的副本,即删除源文件,也可以打开N列的文件。 图1 根据B列的图号在N列嵌入对应的PDF文件 图2 PDF文件 图3 文件格式 Sub 导入文件() Ap...

qq389445046的博客 5574

XGBoost与Embedding混合建模实战解析

在机器学习领域,特征工程与模型融合是提升预测性能的关键技术。Embedding技术通过将高维稀疏特征(如文本、ID类数据)转化为低维稠密向量,有效捕获语义关联;而XGBoost作为强大的集成学习算法,擅长处理结构化特征并进行自动特征组合。两者结合的混合架构(如Semantic Boosted Trees)在金融风控和推荐系统等场景中展现出显著优势,尤其在处理用户行为序列、商品ID等复杂特征时,相比传统方法能获得更好的模型效果。本文通过电商推荐和金融反欺诈等案例,详解如何实现Embedding+XGBoost

weixin_28718641的博客 324

在Spring Boot框架中使用拦截器实现URL限制

通过调用`addInterceptor`方法将其添加到`InterceptorRegistry`中,并使用`addPathPatterns`方法指定要拦截的URL模式(在此示例中,拦截所有URL)。在`preHandle`方法中,您可以读取限制URL列表的JSON文件,并在请求到达时进行匹配检查。在您的配置类(通常是一个继承自`WebMvcConfigurerAdapter`的类)中,重写`addInterceptors`方法,并添加您的拦截器。限制URL列表的JSON格式可以根据您的需求进行定义。

canduecho的专栏 1920

Java零基础之多线程篇:线程间如何通信?

随着计算机技术的发展,多线程编程已经成为现代软件开发中的一个重要方向。在多线程编程中,线程间的通信是一个非常关键的问题。在Java开发语言中,Java提供了一些机制来实现线程间的通信,帮助开发者协调不同线程之间的执行顺序和数据交换。本文将介绍Java多线程编程中的线程间通信的相关知识。首先,我们将从简介开始,介绍线程间通信的基本概念和原理。然后,我们将通过源代码解析的方式,深入探讨Java中实现线程间通信的方法。接着,我们将给出一些应用场景案例,展示线程间通信在实际开发中的应用。

喵手的博客 1557

过滤器实现URL拦截,跳转URL

过滤器实现URL拦截,跳转URL 一,背景 业务存在pc和pad两个客户端,pc已经上线。并且pc和pad大部分的接口都可以复用,为了避免重复的代码写2份(即相同的controller),所以目标是pc和pad共用controller,至于pad新的接口,则pad专属。 二,实现 为了实现pc和pad接口公用,pad会在url上传入特定的前缀,比如/pad。 使用过滤器,在DispatcherServlet#doDispatch方法执行前,将url进行替换。 AbstractHandlerMethodMap

ceshiyuan001的博客 5912

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

Python量化交易:主流回测框架Backtrader入门详解

Python量化交易框架Backtrader入门指南 Backtrader是一个功能强大的Python量化回测框架,可以帮助交易者专注于策略逻辑而非基础设施。本文介绍了Backtrader的核心架构和使用方法: 框架优势:自动处理订单执行、手续费、滑点、仓位管理等复杂问题,采用事件驱动模式接近真实交易场景。 核心组件: Cerebro:控制中心 Strategy:交易策略 Data Feed:数据输入 Broker:模拟经纪商 Indicators:技术指标 使用流程: 安装:pip install bac

Science prince的博客 935

java拦截器跳转页面跳转页面跳转_vue中页面跳转拦截器的实现方法

本文主要给大家介绍的是关于vue页面跳转拦截器的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:登录拦截逻辑第一步:路由拦截首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录。如果用户已经登录,则顺利进入路由, 否则就进入登录页面。在路由管理页面添加meta字段import Vue from 'vue'import Rou...

weixin_42175971的博客 1328

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Filter——拦截请求保护页面安全

一起来看看Filter是怎样为页面安全提供保护的?

1745

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在 Java Web 项目中优雅地实现验证码拦截与校验

在 Web 开发中,很多网站都会对敏感页面或公告信息做 **验证码拦截**,以防止爬虫或恶意访问。 比如访问某些公告详情页时,必须先输入验证码才能继续浏览。

微笑听雨 1506

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Filter的url-pattern、Filter的生命周期以及FilterConfig和一个拦截访问的小案例

1.url-pattern:Filter的拦截路径,即浏览器在请求什么位置的资源时,过滤器会进行拦截[域名]:port/工程路径/a.jsp会拦截3.目录匹配<url-pattern>/manage/*</url-pattern>对应的请求地址[域名]:port/工程路径/manage/xx,即web工程manage目录下所有的资源都会拦截4.后缀名匹配5.Filter过滤器只关心请求的地址是否匹配,不关心请求的资源是否存在。

weixin_74484843的博客 1964

Spring Security自定义登录页面全攻略(含CSRF、验证码集成方案)

掌握Spring Security自定义登录页面设计与实现,解决默认页面不美观、功能单一问题。涵盖表单配置、CSRF防护、验证码集成等核心方法,适用于企业级权限系统开发。支持前后端分离架构,提升安全性和用户体验,值得收藏。

VarPerch的博客 902

vue跳到页面_vue实现登录后页面跳转到之前页面的实例代码

vue实现登录后页面跳转到之前页面在开发中我们经常遇到这样的需求,需要用户直接点击一个链接进入到一个页面,用户点击后链接后会触发401拦截返回登录界面,登录后又跳转到链接的页面而不是首页,这种问题该如何去做呢?先说一下我们需要用到的几个API:1.router.currentRoute:当前的路由信息对象,我们可以通过router.currentRoute.fullPath获得解析后的 URL,包...

weixin_33534991的博客 1294

tomcat部署下的项目,使用Filter过滤器,实现未登录不能访问目标资源的目的

通过简单过滤器,实现对资源文件的限制访问

qq_52167794的博客 945

SpringBoot-拦截器

SpringBoot-拦截器

爱笑的boy的博客 383

java页面跳转登录状态丢失_详解springmvc控制登录用户session失效后跳转登录页面...

springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下:第一步,配置 web.xml15第二步,配置spring-mvc.xml第三步,写拦截器SystemSessionInterceptor 方法public class SystemSessionInterceptor implements HandlerInterceptor {private static f...

weixin_34871733的博客 344

Spring Boot拦截器详解

*preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)**:此方法在请求处理之前调用。该方法在拦截器类中首先执行,用于一些预初始化操作或对当前请求进行预处理。你还可以进行一些判断,以确定请求是否应该继续。此方法的返回值为布尔类型。当它返回 false 时,表示请求结束,后续的拦截器和控制器将不再执行。当它返回 true 时,将调用下一个拦截器的 preHandle 方法。

z1ztai的博客 1114

SpringBoot之HandlerInterceptor拦截器的使用

在Spring Boot 项目中, 拦截器是开发中常用手段,要来做登陆验证、性能检查、日志记录等。URI 可以唯一标识一个资源, URL 可以提供找到该资源的路径。拦截所有的请求时要注意哪些资源需要放行,防止无法请求。拦截器注册到配置类中(实现WebMvcConfigurer 的addInterceptors),一定要指定拦截规则。😁热门专栏推荐Thymeleaf快速入门及其注意事项Spring Initailizr–快速入门–SpringBoot的选择。

m0_73557631的博客 742

过滤器和拦截器

第一步:自定义一个实现了Interceptor接口的类,或者继承抽象类AbstractInterceptor。第二步:在配置文件中注册定义的拦截器。第三步:在需要使用Action中引用上述定义的拦截器,为了方便也可以将拦截器定义为默认的拦截器,这样在不加特殊说明的情况下,所有的Action都被这个拦截器拦截。

2302_77971734的博客 864

Java --- springboot2配置拦截器

所有拦截器的 preHandle方法:①、如果当前拦截器prehandler返回为true。则执行下一个拦截器的preHandle。②、如果当前拦截器返回为false。直接 倒序执行所有已经执行了的拦截器的 afterCompletion;6、 前面的步骤有任何异常都会直接倒序触发 afterCompletion。可以处理请求的handler以及handler的所有 拦截器】3、如果任何一个拦截器返回false。5、倒序执行所有拦截器的postHandle方法。4、所有拦截器都返回True。

qq_46093575的博客 329

【Java 进阶篇】Java Filter 过滤器拦截路径配置详解

本文详细介绍了在 Java Web 应用中配置过滤器的拦截路径,包括使用web.xml文件和注解两种方式。通过示例演示了拦截路径的匹配规则,并通过用户权限验证过滤器的例子说明了拦截路径配置的实际应用。过滤器是 Web 应用中强大的组件之一,正确配置拦截路径是保证过滤器按照预期工作的关键。希望本文对开发者理解和使用 Java Web 过滤器提供了帮助。

繁依Fanyi的博客 2784
上一篇: SM4算法设计原理
下一篇: sybase数据库日志存储空间满了的处理方法
Walter Sun
博客等级 码龄9年 1726粉丝 288原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值