struts过滤器,防止页面sql注入

泛微E-Cology9前台SQL注入漏洞复现与安全防护实践 SQL注入是一种常见的Web安全漏洞,其核心原理在于应用程序未对用户输入进行有效验证和过滤,导致攻击者能够将恶意SQL代码插入到后端数据库查询中。这种漏洞的技术价值在于它直接威胁到数据库的机密性、完整性和可用性,可能造成敏感数据泄露、数据篡改甚至服务器沦陷。在应用场景上,SQL注入尤其高发于存在用户交互且涉及数据库操作的功能模块,如登录认证、数据查询、订单管理等。本文以泛微E-Cology9协同办公平台的WorkPlanService接口为例,深入剖析其前台SQL注入漏洞的成因。通过手工注入与SQLMap自 阅读详情
package com.tarena.dingdang.filter;

import java.io.IOException;
import java.util.Enumeration;

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;

public class AntiSqlInjectionfilter implements Filter {

    public void destroy() {
        // TODO Auto-generated method stub
    }
    
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
    
    public void doFilter(ServletRequest args0, ServletResponse args1,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)args0;
        HttpServletRequest res=(HttpServletRequest)args1;
         //获得所有请求参数名
        Enumeration params = req.getParameterNames();
        String sql = "";
        while (params.hasMoreElements()) {
            //得到参数名
            String name = params.nextElement().toString();
            //System.out.println("name===========================" + name + "--");
            //得到参数对应值
            String[] value = req.getParameterValues(name);
            for (int i = 0; i < value.length; i++) {
                sql = sql + value[i];
            }
        }
        //System.out.println("============================SQL"+sql);
        //有sql关键字,跳转到error.html
        if (sqlValidate(sql)) {
            throw new IOException("您发送请求中的参数中含有非法字符");
            //String ip = req.getRemoteAddr();
        } else {
            chain.doFilter(args0,args1);
        }
    }
    
    //效验
    protected static boolean sqlValidate(String str) {
        str = str.toLowerCase();//统一转为小写
        String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +
                "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +
                "table|from|grant|use|group_concat|column_name|" +
                "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +
                "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//过滤掉的sql关键字,可以手动添加
        String[] badStrs = badStr.split("\\|");
        for (int i = 0; i < badStrs.length; i++) {
            if (str.indexOf(badStrs[i]) >= 0) {
                return true;
            }
        }
        return false;
    }
}


<!--在web.xml文件中的配置-->
<!-- 防止SQL注入的过滤器 -->
    <filter>
        <filter-name>antiSqlInjection</filter-name>
        <filter-class>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>antiSqlInjection</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>




蓝凌EIS平台SQL注入漏洞手工复现与深度剖析 SQL注入是一种将恶意SQL代码插入到应用输入参数中,从而操纵后端数据库的经典Web安全漏洞。其核心原理在于程序未对用户输入进行充分的验证与过滤,导致数据与代码边界混淆,攻击者可借此绕过认证、窃取敏感数据甚至控制服务器。理解其机制对于构建安全的应用架构至关重要,是开发与安全人员的必修课。在诸如企业协同办公(OA)等复杂业务系统中,报表、查询等涉及动态数据拼接的功能模块常成为高危点。本文以一次典型的**OA系统**安全事件为切入点,通过手工复现**蓝凌EIS**平台历史漏洞的完整过程,深入演示从漏洞探测、信息 阅读详情

相关推荐

基于JSP+Struts2+Spring+MySQL的宠物网站开发实战与架构解析

Java Web开发是构建企业级应用的核心技术体系,其核心在于理解MVC架构模式如何将用户请求、业务逻辑与数据持久化分离。通过依赖注入、面向切面编程等原理,Spring框架实现了组件解耦与事务管理,而Struts2则通过拦截器机制集中处理请求控制。这些技术的组合为构建可维护、可扩展的Web应用提供了坚实基础,尤其在内容管理、电商平台及社区论坛等需要动态数据交互的场景中广泛应用。本文以宠物社区网站为例,深入探讨了如何整合JSP、Struts2、Spring与MySQL这一经典技术栈,并重点解析了用户认证安全与

weixin_34392435的博客 917

Struts2拦截SQL注入

<interceptors> <!--设置超时拦截器 --> <interceptor name="sessionOut" class="com.util.SessionOutCheckInterceptor"></interceptor> <!-- 设置拦截去栈...

weixin_30415113的博客 1096

Java Web毕业设计实战:基于JSP+Struts2+Spring+MySQL的宠物网站开发

Java Web开发是构建企业级应用的核心技术体系,其核心在于通过MVC架构实现业务逻辑、数据与展示的分离。Spring框架通过控制反转和依赖注入管理对象生命周期,实现组件解耦;Struts2作为控制器负责请求分发与处理;JSP则承担视图层渲染,结合MySQL完成数据持久化。这种分层架构的价值在于提升代码可维护性、可扩展性,是理解Web应用从请求到响应完整闭环的经典实践。在宠物领养、电商等业务场景中,此类技术组合能有效支撑用户管理、商品信息CRUD、订单流程等核心功能。本文以宠物网站为例,详细解析如何整合S

weixin_34375251的博客 459

Struts1.x FILTER过滤器的使用

1、过滤器概述 过滤器的作用,就是拦截发送到服务端的request/response对象,并且对其进行加工,过滤器具有双向顺序:filter chain (chain 链,束缚) 过滤器被调用的顺序,其实就是web.xml中被定义的顺序: Browers ==&gt;Filter1 ==&gt;Filter2 ==&gt;Filter3 ==&gt;Web Server Web Serve...

数据库天地 329

开发者的避坑指南:在Apple Silicon Mac上构建RocketMQ Python客户端的完整心路历程

本文详细记录了在Apple Silicon Mac上构建RocketMQ Python客户端的完整过程,重点解决了架构兼容性问题。通过源码编译rocketmq-client-cpp库,修复构建脚本和CMake配置,最终成功在M2芯片MacBook Pro上部署RocketMQ Python客户端,为开发者提供了实用的避坑指南。

Pepper的专栏 696

金融领域强化学习在多资产类别动态交易执行中的应用

在金融市场中,多资产类别的交易执行面临着诸多挑战,如市场的不确定性、资产间的复杂相关性等。传统的交易策略往往难以适应动态变化的市场环境。本研究的目的在于探索如何运用强化学习技术,实现多资产类别在动态市场环境下的高效交易执行。具体范围涵盖了从强化学习的基本原理到在多资产交易场景中的实际应用,包括核心算法的实现、数学模型的构建以及项目实战等方面。本文首先介绍研究背景,包括目的、预期读者和文档结构。接着阐述核心概念,包括强化学习和多资产类别动态交易执行的原理及其联系。

AI 领航者的博客 630

防止SQL注入攻击的10种有效方法

本文介绍了10种防止SQL注入攻击的方法,包括使用参数化查询、输入验证和过滤、存储过程、最小权限原则、ORM框架、准备语句、安全的数据库连接、避免动态拼接SQL语句、使用防火墙和入侵检测系统以及定期更新和维护数据库软件。输入验证和过滤是一种用于确保用户输入数据的安全性和有效性的技术。需要注意的是,具体的代码实现可能因使用的数据库驱动库而有所不同,但核心思想是相同的:使用PreparedStatement来执行参数化查询,将用户输入作为参数传递给查询,而不是直接拼接到查询字符串中,以提高应用程序的安全性。

qq_28245087的博客 7万+

CNN经典网络模型(二):AlexNet简介及代码实现(PyTorch超详细注释版)

CNN经典网络模型之一:AlexNet,本文包含其简介及代码,在PyTorch中实现,进行超详细注释,适合新生小白阅读学习~

qq_43307074的博客 2万+

Struts2学习4——防sql注入过滤器

web.xml <!-- sql Filter --> <filter> <filter-name>SqlFilter</filter-name> <filter-class>Utils.SqlFilter</filter-class> </filter> <filter-mapping> <filter-name>Sq

猿来这样-谢厂节的博客 4609

jetson nano网络配置(有线、无线、USB)

注意:本节内容使用Jetson nano B01 版本或Jetson nano ALT 版本安装方式相同,在安装无线网卡等设备时,由于线材和设备比较脆弱,需要轻拿轻放,接口连接不上时,需要重新对准接口在进行连接,不要强行连接。Jetson nano 需要连接网络来进行更多的操作,本节就来讲解Jetson nano 的三种网络连接方法。有线:我们可以使用网线连接Jetson nano 的RJ45 接口,实现联网。

m0_73841621的博客 1万+

别再让CPU干GPU的活了:CST Studio Suite GPU加速深度调优指南(从驱动版本到任务管理器监控)

本文深入探讨了CST Studio Suite的GPU加速深度调优方法,从NVIDIA驱动版本选择到系统级资源管理,再到实时监控与瓶颈诊断技术。通过科学的驱动优化、GPU资源管理策略和高级调优技巧,显著提升仿真效率,特别适合电磁仿真工程师和硬件加速需求的专业用户。

weixin_28740299的博客 166

5种方法防止 jsp被sql注入

一、 SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 ===========================================

收集盒 Book box 6988

C#从入门到精通(35)—如何防止winform程序因为误操作被关闭

我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不小心把鼠标点到了关闭按钮,如果这是一个正在生产的机器,突然关闭软件可能会导致产品损坏,那么我们如何去解决这个误操作的问题呢,本文就来讲解解决方案!

qq_34059233的博客 678

防止常见XSS 过滤 SQL注入 JAVA过滤器filter

XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。 sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输...

Atopos_16的博客 286

LabVIEW实现TCP通信

在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

不脱发的程序猿 1962

挣脱枷锁:网页禁止复制/F12失效/右键失灵时的破局之道

大家在网上冲浪的否遇到过这种情况?急需网页上的一段关键信息、一段优美的文字、一个重要的代码片段,或者只是想收藏某篇文章,却发现:文本选择被阻止,右键菜单被禁用,开发者工具(F12)被屏蔽,查看源代码(Ctrl+U)失效?本文会有力解决这些封锁。

安德洛夫 2112

Java防止SQL注入的几个途径

Java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构,大部分的SQL注入已经挡住了,在WEB层我们可以过滤用户的输入来防止SQL注

ATwill的专栏 430

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

过滤器 去除sql注入语句

  package com.spider.reader.common.filter; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.Fil...

zgh670042085的博客 425

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

struts防止xss攻击_Web常见攻击手段(二)

人一生当中,最重要的是,清楚自己想要什么,明白自己能做什么。千万不要等到生命终结的时候,才后悔没有得到想要的,没有去做能做的,从而虚度了人生。上篇文章介绍了几个Web常见攻击手段:防盗链、CSRF攻击还有安全漏洞像文件上传漏洞、密码漏洞等,这篇文章我们介绍一下:XSS攻击和sql注入。XSS攻击什么是XSS攻击?XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令...

weixin_39784774的博客 261

技术总结:深入理解Java框架Struts2的安全机制

同时,它还支持数据加密存储,确保数据在存储介质上的安全性。此外,Struts2还提供了丰富的数据验证和过滤机制,确保用户输入的数据符合预期格式和类型。作为一款广泛应用于企业级应用的Java框架,Struts2以其强大的功能性和安全性,吸引了大量的开发者。此外,Struts2还提供了丰富的安全日志记录功能,可以记录应用中的安全事件和异常情况。在安全机制方面,Struts2提供了丰富的安全组件和策略,旨在提高应用的安全性。在应用开发过程中,开发者应该充分了解和应用Struts2的安全机制,提高应用的安全性。

2501_90410679的博客 115

Jeecg框架JNDI注入漏洞深度剖析:从原理到实战复现与修复

JNDI(Java命名和目录接口)是Java EE中用于访问命名和目录服务的核心API,它允许应用程序通过名称查找和访问网络中的对象资源。其工作原理是通过InitialContext的lookup方法,根据指定的URL协议(如LDAP、RMI)定位并获取远程对象。这项技术的价值在于实现了资源的统一管理和动态发现,广泛应用于分布式系统的服务查找、数据源配置等场景。然而,当用户输入被未经校验地直接拼接至lookup参数时,便构成了JNDI注入漏洞,攻击者可借此操控应用访问恶意服务,进而触发远程代码执行。本文以J

weixin_30268921的博客 480

复习课二次

spring优点 轻量级:占用内存很小 依赖注入  控制反转 整合方面很好 集成hibernate.SpringMvc框架  任务定时 自动提交事务 Mybatis(轻量级) 半自动 半封装 怎么防止SQL注入: 过滤器 js验证(正则表达式) hibernate对象三种状态 临时状态     &n...

WENYUDIE0909的博客 179

一些框架面试知识

1:谈谈对Spring的理解: 以玩笑话来说Spring就是一家公司,在者还有很多非常好用的Spring系列的产品,Spring就是一个轻量级的开源框架也可说是一个集成框架,(像 SpringMVC,MyBatis,Hibernate,Struts,Shiro等框架就被Spring所集成),在Spring中有两个核心就是IOC(控制反转)和 AOP(面向切面) 2:简述 I...

lxxiaocaiji的博客 235

ajax ssm 页面跳转_SSM框架的面试常见问题

阅读文本大概需要9分钟。一、Spring面试题1、Spring 在ssm中起什么作用?Spring:轻量级框架作用:Bean工厂,用来管理Bean的生命周期和框架集成。两大核心:IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactoryAOP:面向切面编程2、Spring的事务?编程式事务管...

weixin_39667626的博客 109

一些框架小知识

1:谈谈对Spring的理解: 以玩笑话来说Spring就是一家公司,在者还有很多非常好用的Spring系列的产品,Spring就是一个轻量级的开源框架也可说是一 个集成框架,(像 SpringMVC,MyBatis,Hibernate,Struts,Shiro等框架就被Spring所集成),在Spring中有两个核心就是 IOC(控制反转)和 AOP(面向切面) ...

嗯很喜欢你 399

spring,springMVC,Hibernate,MyBatis小结

1:谈谈对Spring的理解: 以玩笑话来说Spring就是一家公司,在者还有很多非常好用的Spring系列的产品,Spring就是一个轻量级的开源框架也可说是一个集成框架,(像 SpringMVC,MyBatis,Hibernate,Struts,Shiro等框架就被Spring所集成),在Spring中有两个核心就是IOC(控制反转)和 AOP(面向切面) ...

qbb的博客 498
上一篇: BIRT 在IE10浏览器显示不全解决方案
下一篇: onblur事件的时候focus在火狐浏览器中无效
mingxingxinxing
博客等级 码龄16年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值