JAVA中防止SQL注入(过滤特殊字符方案)

1.页面使用JavaScript过滤SQL注入的特殊字符

<SCRIPT language="JavaScript">    
function Check(theform)    
{    
if (theform.UserName.value=="")    
{    
alert("请输入用户名!")    
theform.UserName.focus();    
return (false);    
}    
if (theform.Password.value == "")    
{    
alert("请输入密码!");    
theform.Password.focus();    
return (false);    
}    
}    
function IsValid( oField )    
{    
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;    
$sMsg = "请您不要在参数中输入特殊字符和SQL关键字!"    
if ( re.test(oField.value) )    
{    
alert( $sMsg );    
oField.value = '';    
oField.focus();    
return false;    
}    
}    
</SCRIPT> 

 2.后台服务过来特殊字符

package cn.com.hbivt.util;   
public class StringUtils {   
       //过滤通过页面表单提交的字符   
       private static String[][] FilterChars={{"<","&lt;"},{">","&gt;"},{" ","&nbsp;"},{"\"","&quot;"},{"&","&amp;"},   
                                       {"/","&#47;"},{"\\","&#92;"},{"\n","<br>"}};   
       //过滤通过javascript脚本处理并提交的字符   
       private static String[][] FilterScriptChars={{"\n","\'+\'\\n\'+\'"},   
                                                           {"\r"," "},{"\\","\'+\'\\\\\'+\'"},   
                                                                   {"\'","\'+\'\\\'\'+\'"}};   
  
       /**  
        * 用特殊的字符连接字符串  
        * @param strings 要连接的字符串数组  
        * @param spilit_sign 连接字符  
        * @return 连接字符串  
        */  
       public static String stringConnect(String[] strings,String spilit_sign){   
         String str="";   
         for(int i=0;i<strings.length;i++){   
           str+=strings[i]+spilit_sign;   
         }   
         return str;   
       }   
  
       /**  
        * 过滤字符串里的的特殊字符  
        * @param str 要过滤的字符串  
        * @return 过滤后的字符串  
        */  
       public static String stringFilter(String str){   
         String[] str_arr=stringSpilit(str,"");   
         for(int i=0;i<str_arr.length;i++){   
           for(int j=0;j<FilterChars.length;j++){   
             if(FilterChars[j][0].equals(str_arr[i]))   
               str_arr[i]=FilterChars[j][1];   
           }   
         }   
         return (stringConnect(str_arr,"")).trim();   
       }   
  
       /**  
* 过滤脚本中的特殊字符(包括回车符(\n)和换行符(\r))  
* @param str 要进行过滤的字符串  
* @return 过滤后的字符串  
* 2004-12-21 闫  
*/  
public static String stringFilterScriptChar(String str){   
String[] str_arr=stringSpilit(str,"");   
for(int i=0;i<str_arr.length;i++){   
   for (int j = 0; j < FilterScriptChars.length; j++) {   
     if (FilterScriptChars[j][0].equals(str_arr[i]))   
       str_arr[i] = FilterScriptChars[j][1];   
   }   
}   
return(stringConnect(str_arr,"")).trim();   
}   
  
  
       /**  
        * 分割字符串  
        * @param str 要分割的字符串  
        * @param spilit_sign 字符串的分割标志  
        * @return 分割后得到的字符串数组  
        */  
       public static String[] stringSpilit(String str,String spilit_sign){   
         String[] spilit_string=str.split(spilit_sign);   
         if(spilit_string[0].equals(""))   
         {   
           String[] new_string=new String[spilit_string.length-1];   
           for(int i=1;i<spilit_string.length;i++)   
             new_string[i-1]=spilit_string[i];   
             return new_string;   
         }   
         else  
           return spilit_string;   
       }   
  
       /**  
        * 字符串字符集转换  
        * @param str 要转换的字符串  
        * @return 转换过的字符串  
        */  
       public static String stringTransCharset(String str){   
         String new_str=null;   
         try{   
             new_str=new String(str.getBytes("iso-8859-1"),"GBK");   
         }   
         catch(Exception e){   
           e.printStackTrace();   
         }   
         return new_str;   
       }   
  
       /**  
        * 测试字符串处理类  
        * @param args 控制台输入参数  
        */  
       public static void main(String[] args){   
  
         //测试字符串过滤   
         String t_str1="<h1>StringDispose字符串 处理\n\r\'\"</h1>";   
         System.out.println("过滤前:"+t_str1);   
         System.out.println("过滤后:"+StringUtils.stringFilter(t_str1));   
         //测试合并字符串   
         String[] t_str_arr1={"PG_1","PG_2","PG_3"};   
         String t_str2=StringUtils.stringConnect(t_str_arr1,",");   
         System.out.println(t_str2);   
         //测试拆分字符串   
         String[] t_str_arr2=StringUtils.stringSpilit(t_str2,",");   
         for(int i=0;i<t_str_arr2.length;i++){   
           System.out.println(t_str_arr2[i]);   
         }   
       }   
}

 

 

过滤器实现全局防SQL注入 目录SqlInjectFilter.javaMyRequestWrapper.java 场景: 公司渗透测试,发现了输入框有SQL注入风险,于是进行修改。 解决方案: 增加全局过滤器,对请求参数中存在SQL过滤器的参数进行提示,主要增加了两个类: SqlInjectFilter,过滤器; MyRequestWrapper,用于过滤器中获取POST请求参数。 SqlInjectFilter.java import com.alibaba.fastjson.JSONObject; import com. 阅读详情

相关推荐

sql验证特殊字符处理防止注入

防sql注入 最好的方式是使用? 占位符 如果需要拼接参数的sql,需要验证特殊字符处理,防止注入 static String reg = "(?:')|(?:--)|(/\\*(?:.|[\\n\\r])*?\\*/)|" + "(\\b(select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|into|drop|execute)\\b)";

路人甲的博客 2224

JAVA中防止SQL注入攻击类的源代码

防止SQL注入的Javascript代码:::: [code="java"]看到了一段防止SQL注入的JavaScript代码,但是似乎在后台解决的话会更好。 function Check(theform) { if (theform.UserName.value=="") { alert("请输入用户名!") theform.UserName.focus()...

跑步走,到底是是跑还是走? 477

mybatis是如何防止sql注入的

Java基础教程系列,打造精品专栏。

学Java,找哪吒 1万+

java 过滤敏感词和特殊字符 防止sql注入

前一段时间,被告知公司主页可以sql注入,所以就写了, 开始想一起过滤敏感词语和特殊字符,网上搜索一遍,感觉没有什么好的方法, 所以借鉴了网上部分思路,总体分2步走, 一是过滤敏感词语,我目前能想到的就这么多,可以自己加 二是过滤特殊字符 代码如下: String sqlValidate(String str) {          String str2 = str.toL

梁哥|Time 1万+

SQL注入过滤 (Java版)

SQL 安全注入漏洞过滤器类 Java实现 Java类实现,以及配置文件web.xml

sql注入Java过滤器

配置在web.xml中,可以防止SQL注入,可以自己定义一些需要过滤的特殊字符

java 过滤sql关键字_JAVA中防止SQL注入(过滤特殊字符方案)

1.页面使用JavaScript过滤SQL注入的特殊字符function Check(theform){if (theform.UserName.value==""){alert("请输入用户名!")theform.UserName.focus();return (false);}if (theform.Password.value == ""){alert("请输入密码!");theform.P...

weixin_31545685的博客 2294

如何适配自定义激光雷达数据到LIO-SAM:解决ring和time参数缺失问题

本文详细解析了如何将非标准激光雷达(如速腾、Livox)适配到LIO-SAM框架中,重点解决ring和time参数缺失问题。提供了从源码修改到通用适配中间件的多层级解决方案,并包含实机测试与性能调优指南,帮助开发者高效完成雷达数据适配。

weixin_42551227的博客 421

java 过滤sql特殊字符_防止特殊字符SQL注入实现方案

先理解所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。SQL注入问题已经是老生常谈的问题了,如何避免特殊字符的SQL注入,下面为大家介绍一种相对比较实用并且很简单的方式。如果是通过"yoodb.com/login?param=素文宅"传递参数,我们需要把中文转码,在传参数时先把参数进行转码,具体代码:java.net...

weixin_33356324的博客 2052

【算法设计与分析】期末复习题(超详细)

刚刚整理了一下电脑的文件,发现了这份上学期的算法设计与分析期末复习题,有需要的文后自取。

a1234567822的博客 6614

SAP FI实战入门:从借贷法则到F-02记账,新手必懂的会计凭证操作

本文详细介绍了SAP FI模块中借贷记账法的核心逻辑及F-02凭证录入的全流程操作。通过实例解析借贷方向规则、科目编码设置及金额镜像原则,帮助新手快速掌握会计凭证操作技巧。同时提供了FS10N余额查询和常见错误排查方法,助力用户高效完成SAP财务记账任务。

weixin_29306571的博客 263

java sql注入 过滤器_java 过滤器filter防sql注入的实现代码

实例如下:XSSFilter.javapublic void doFilter(ServletRequest servletrequest,ServletResponse servletresponse, FilterChain filterchain)throws IOException, ServletException {//flag = true 只做URL验证; flag = false...

weixin_35988178的博客 508

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2344

java过滤防止sql注入过滤

/** * 过滤特殊字符 * @author: Simon * @date: 2017年8月31日 下午1:47:56 * @param str * @return */ public static String StringFilter(String str){ str = str.replaceAll("<", "&lt;").replaceAll(">"...

weixin_30945039的博客 100

【第一章】核心思维:那个在此刻“消失”的 CPU

摘要:RTOS本质是"有状态的抢占"而非"多任务",单核MCU通过时间片分时复用实现任务切换。裸机编程的线性思维在RTOS中不再适用,开发者需接受代码随时被打断的现实。RTOS通过保存/恢复CPU寄存器组(上下文)实现任务切换,每个任务拥有独立栈空间。非原子操作(如全局变量自增)会导致竞态条件,必须使用临界区或互斥锁保护。RTOS编程需要建立并发思维,关注代码原子性、可重入性和栈空间分配。

一路往蓝-Anbo 的博客 105

1553B总线介绍及其硬件方案设计

军用1553B总线 1.简介 简单介绍可参考(https://blog.youkuaiyun.com/ScilogyHunter/article/details/108444231)博主写的很详细。 1553B总线是MIL-STD-1553总线的简称,其中B就是BUS,MIL-STD-1553B总线是飞机内部时分制命令/响应式多路复用数据总线。1553B数据总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准。1553B总线能挂31个远置终端,1553B总线采用指令/响应型通信协议,它有三种终端类型: BC:

小幽余生不加糖 1万+

Java 防止 SQL 注入过滤工具类

SQL 注入是一种常见的安全漏洞,攻击者通过在输入字段中插入恶意 SQL 代码,从而绕过应用程序的安全机制,执行未经授权的数据库操作。为了防止这种攻击,开发者通常需要对用户输入进行严格的过滤和验证。Java 作为一种广泛使用的编程语言,提供了多种方式来处理 SQL 操作。然而,手动编写过滤代码不仅繁琐,而且容易出错。因此,编写一个通用的 SQL 过滤工具类,可以大大简化开发过程,并提高代码的安全性。防止 SQL 注入是每个开发者都必须重视的安全问题。

My_wife_QBL的博客 2808

淘宝母婴用品数据挖掘及可视化分析研究

1. 背景介绍 在当今的电子商务时代,母婴用品市场已经成为了各大电商平台的一片蓝海。淘宝作为中国最大的电子商务平台,其上的母婴用品交易数据自然引人关注。理解这些数据,可以帮助商家更好地制定营销策略,也可以帮助消费者更好地选择产品。因此,本文将对淘宝母婴用品的数据进行深入的挖掘和分析。 1.1 电子商务的

AI天才研究院 1258

四种防止SQL注入的解决方案

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。这个id从请求参数中获取,若参数被拼接为:此时,数据库的数据都会被清空掉,后果非常严重PreparedStatement防止SQL注入mybatis中#{}防止SQL注入对请求参数的敏感词汇进行过滤。

weixin_43702295的博客 9709

组合导航 | RTK、IMU与激光雷达组合导航算法:原理、实现与验证

当激光雷达噪声增加至0.1m时,系统位置RMSE仅上升18%,验证了滤波算法的鲁棒性[110]:融合方案在RTK信号丢失30秒后,位置误差仍控制在1.5m内,显著优于IMU单独导航[28]:ESKF框架能有效建模传感器误差特性,状态向量需包含外参与时间偏移等关键参数。:传感器标定精度直接影响系统性能,建议每3个月进行一次重新标定。:IMU预积分与特征匹配是系统实时性的关键瓶颈,需重点优化。:维持10秒窗口内的关键帧,平衡精度与实时性[132]:特征匹配占总耗时的65%,可通过。

尘世冰封的专栏 943

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

防止SQL注入的四种方案

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。SQL案列这个id从请求参数中获取,若参数被拼接为:1001 or 1 = 1此时,数据库的数据都会被清空掉,后果非常严重.

dehuisun的专栏 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java项目防止SQL注入的四种方案

SQL注入(SQL Injection)是一种代码注入技术,是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。简单来说,SQL注入攻击者通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,传入后端的SQL服务器执行。结果是可以执行恶意攻击者设计的任意SQL命令。由于’或’1’='1 总是为真,所以可以绕过密码验证登录系统。SQL注入可以通过多种方式进行防范,如使用参数化的SQL语句、输入验证和过滤等方法。

Venus's Blog 4万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java项目防止SQL注入的实现方案

防止SQL注入是Java项目开发中的重要安全措施。通过使用、ORM框架、输入验证和过滤、存储过程以及最小权限原则,可以有效地减少SQL注入的风险。开发人员应始终遵循安全编码的最佳实践,确保应用程序的安全性。

格子先生Lab的博客 842

[实践总结] Java 防止SQL注入的四种方案

当 id 传值为 1001 or 1 = 1此时,数据库的数据都会被清空掉,后果非常严重。

张紫娃的博客 1790

怎么防止SQL注入?

防止SQL注入攻击的方法是使用参数化查询,也就是使用预编译语句(Prepared Statement)或者存储过程(Stored Procedure)来处理 SQL 查询语句。 使用预编译语句的好处是,它会将 SQL 查询语句和参数分开,从而避免了恶意用户通过参数注入恶意 SQL 代码的风险。同时,预编译语句可以有效地缓存 SQL 查询语句,提高查询性能。

。。。。 8000
上一篇: C# 通过服务启动窗体(把窗体添加到服务里)实现用户交互的windows服务[转发]...
下一篇: JAVA中防止SQL注入(使用PreparedStatement 方案)
wangguoping
博客等级 码龄19年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值