SQL注入原理与解决方法代码示例


当前第2页 返回上一页

2.使用正则表达式过滤传入的参数

正则表达式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;

判断是否匹配:
Pattern.matches(CHECKSQL,targerStr);

下面是具体的正则表达式:

检测SQL meta-characters的正则表达式 :/(\%27)|(\')|(\-\-)|(\%23)|(#)/ix
修正检测SQL meta-characters的正则表达式 :/((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|(:))/i
典型的SQL 注入攻击的正则表达式 :/\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
检测SQL注入,UNION查询关键字的正则表达式 :/((\%27)|(\'))union/ix(\%27)|(\')
检测MS SQL Server SQL注入攻击的正则表达式:/exec(\s|\+)+(s|x)p\w+/ix
等等…..

其实可以简单的使用replace方法也可以实现上诉功能:

public static String TransactSQLInjection(String str)
     {
        return str.replaceAll(".*([';]+|(--)+).*", " ");
     } 

3.字符串过滤

比较通用的一个方法:(||之间的参数可以根据自己程序的需要添加)

public static Boolean sql_inj(String str)  
{
	String inj_str = "'|and|exec|insert|select|delete|update|  
count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
	String inj_stra[] = split(inj_str,"|");
	for (int i=0 ; i < inj_stra.length ; i++ )  
	{
		if (str.indexOf(inj_stra[i])>=0)  
		{
			return true;
		}
	}
	return false;
}

4.jsp中调用该函数检查是否包函非法字符

防止SQL从URL注入:

sql_inj.java代码:

package sql_inj;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.text.*;
import java.lang.String;
public class sql_inj{
	public static Boolean sql_inj(String str)  
	{
		String inj_str = "'|and|exec|insert|select|delete|update|  
count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
		//这里的东西还可以自己添加  
		String[] inj_stra=inj_str.split("\\|");
		for (int i=0 ; i < inj_stra.length ; i++ )  
		{
			if (str.indexOf(inj_stra[i])>=0)  
			{
				return true;
			}
		}
		return false;
	}
}

5.JSP页面添加客户端判断代码:

使用javascript在客户端进行不安全字符屏蔽

功能介绍:检查是否含有”‘”,”\\”,”/”

参数说明:要检查的字符串

返回值:0:是1:不是

function check(a)  
{
	return 1;
	fibdn = new Array (”‘” ,”\\”,”/”);
	i=fibdn.length;
	j=a.length;
	for (ii=0; ii<i; ii++)  
	{
		for (jj=0; jj<j; jj++)  
		{
			temp1=a.charAt(jj);
			temp2=fibdn[ii];
			if (tem';
			p1==temp2)  
			{
				return 0;
			}
		}
	}
	return 1;
}

总结

以上就是本文关于SQL注入原理与解决方法代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅:MYSQL updatexml()函数报错注入解析、几个比较重要的MySQL变量、ORACLE SQL语句优化技术要点解析等,如有不足之处,欢迎留言指出,小编会及时回复大家并修改。感谢朋友们对本站的支持!

更多SQL内容来自木庄网络博客


标签:SQL

返回前面的内容

相关阅读 >>

sql如何在原有表基础上增加一列

mysql存储过程及语法详解

介绍十步完全理解 sql

mysql join之完全用法

sql server 2005基础知识详细整理

sql语句执行顺序是什么

大数据分析r语言rstudio使用超详细教程

详解sqlserver中的acid属性

mysqlsql是什么?mysqlsql之间的区别有哪些

mysqlsqlserver的比较

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...