`

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

阅读更多
防止SQL注入的Javascript代码::::

看到了一段防止SQL注入的JavaScript代码,但是似乎在后台解决的话会更好。

<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> 




后台处理::::

JAVA-字符串过滤类 
package cn.com.hbivt.util;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
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]);
         }
       }
}

分享到:
评论
4 楼 chunchong 2011-11-16  
真晕,这样怎么能行呢
3 楼 cq.ronadlo 2011-03-01  
[color=brown][/color]。,,,
2 楼 shouzhang1_2 2010-08-05  
这真的可以防止吗?如果用get请求 直接 在url上 输入 可以轻松的避开js。
1 楼 king520 2010-06-02  
mark下

相关推荐

    SQL注入攻击与防御(安全技术经典译丛)

    本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。  什么是SQL注入?理解它是什么以及它的基本原理  查找、确认和自动发现SQL注入  查找代码...

    SQL注入攻击与防御

    本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。  什么是SQL注入?理解它是什么以及它的基本原理  查找、确认和自动发现SQL注入  查找代码...

    Java毕业设计-基于Java的两个通用安全模块的设计与实现(源代码+论文).rar

    该模块专注于网络通信过程中的安全问题,提供了防止SQL注入、XSS攻击等常见网络攻击的有效手段。通过内置的安全过滤器和服务器端验证机制,可以有效拦截恶意请求,保护Web应用免受网络攻击的侵害。同时,模块还支持...

    Web计算机配件报价系统项目源码,Java语言,代码源文件,毕业设计

    本系统还实现了一些安全措施,如防止SQL注入攻击、强制加密密码等等。 作为一篇毕业设计,该项目展示了作者对Java编程语言及其相关技术的理解和掌握水平。此外,该项目还证明了作者对Web应用程序开发的熟练程度,...

    毕业设JAVA Smart系统-题库及试卷管理模块的设计与开发(源代码+论文)

    安全性考虑:强调在开发过程中考虑安全性,如何保护系统免受SQL注入、XSS攻击等常见的安全威胁。 模块化设计:项目采用模块化设计,便于学生理解和实践软件工程中的模块化思想,提高代码的可维护性和可扩展性。 ...

    极度学习整站程序JSP版

    系统防止SQL注入攻击,对密码全部进行 MD5 不可逆加密处理。主要功能: 1、文章栏目无限级分类、自由添加,排序 2、文章可视化的在线编辑器提供了强大的图文混排功能,在线添加、编辑、删除 3、网站相关信息后台动态...

    开源bbs源码java-Software-and-System-Security:xss/sql注入/shellcode/内存管理/二进制安全

    XSS,SQL注入 非典型安全问题:很多 主要是一些代码的逻辑错误,每个漏洞都可能有不同的原理 如何去发现问题 (安全漏洞) -&gt; 漏洞挖掘技术 白盒分析 分析软件的源代码去寻找问题 方法 手工代码分析 -&gt; 软件测试技术 /...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    基于SSM ( Spring + SpringMVC + Mybatis)开发的知识问答社区+源代码+文档说明

    所有的用户输入都做了拦截与参数过滤,避免XSS攻击与SQL注入等。前端视图的渲染采用的是Thymeleaf模板引擎,它很好的与SpringMVC搭配了起来。数据的物理分页使用的是开源项目Mybatis-Page-Helper ,也是非常的轻量和...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    【推荐】网络安全中的漏洞挖掘实践合集.zip

    推荐,网络安全中的漏洞挖掘实践合集,仅供大家学习参阅,...MyBatis框架下SQL注入解决方案 Qemu-kvm和ESXi虚拟机逃逸实例分享 WEB常见漏洞与挖掘技巧研究 Web漏洞挖掘速成特训营 混合式漏洞挖掘研究进展

    net学习笔记及其他代码应用

    25.请详述在dotnet中类(class)与结构(struct)的异同? 答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户...

    asp.net知识库

    最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的...

    新闻文章永恒文章管理系统(YHCMS) v2.0 源码版-yhcms-v20-src.rar

    永恒文章管理系统(YHCMS)v2.0 源码版,即yhcms_v20_src.rar...系统内置了多种安全机制,包括SQL注入防护、跨站脚本攻击(XSS)防护等,确保网站数据的安全和稳定运行。同时,系统的代码经过优化,减少了潜在的安全漏

    BTS Pentesting Lab:BTS Pentesting Lab-一个故意易受攻击的Web应用程序-开源

    BTS PenTesting Lab是一个开放源代码的易受攻击的Web应用程序,由网络安全和隐私基金会(www.cysecurity.org)创建。 它可用于了解许多不同类型的Web应用程序漏洞。 当前,该应用包含以下类型的漏洞:* SQL注入* XSS...

    lamp-cloud微服务脚手架

    基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,自动生成枚举类、数据字典注解、SaveDTO、UpdateDTO、表单验证规则注解、Swagger注解等。 16、定时任务调度器: 基于xxl-jobs进行了...

Global site tag (gtag.js) - Google Analytics