2、
正则表达式 2.1、检测SQL meta-characters的正则表达式 /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix 2.2、修正检测SQL meta-characters的正则表达式 /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-) 54ne.com |(\%3B)|(:))/i 2.3、典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\ 中国网管联盟 %52))/ix 2.4、检测SQL注入,UNION查询
关键字的正则表达式 /((\%27)|(\'))union/ix(\%27)|(\') - 单 引号和它的hex等值 union - union关键字。 2.5、检测MS SQL Server SQL注入攻击的正则表达式 /exec(\s|\+)+(s|x)p\w+/ix 3、字符串过滤 public static String filterContent(String content){ String flt ="'|and|exec|insert|select|delete|update|count|*|% |chr|mid|master|truncate|char|declare||or|-|+|,"Stringfilter[] = flt.split("|")for(int i=0i { content.replace(filter[i], "")} return content} 4、不安全字符
屏蔽 本部分采用js来屏蔽,起的作用很小,这样用屏蔽关键字的方法虽然有一定作用,但是在实际应用中这些 SQL的关键字也可能成为真正的查询关键字,到那是被你屏蔽了那用户不是不能正常的使用了。 只要在代码规范上下点功夫就可以了。 功能介绍:检查是否含有"'","\\","/" 参数说明:要检查的字符串 返回值:0:是 1:不是 函数名是 function check(a) { return 1fibdn = new Array ("'" ,"\\","/")i=fibdn.lengthj=a.lengthfor (ii=0ii { for (jj=0jj { temp1=a.charAt(jj)temp2=fibdn[ii]if (tem'p1==temp2) { return 0} } } return 1}所谓sql注入,给你一个例子
一般代码里写登录校验
"select * from uesrtable where usename = '"+aaa+"' and other = '"+bbb+"'''aaa是前台人家输入的参数,如果不加处理,就可能被注入,因为SQL在执行的之后 ‘--’表示忽略以后的SQL语句,如果aaa参数是
“' or 1=1 --”那么最后SQL就会拼成select * from uesrtable where usename = '' or 1=1 --' and other =...... “--”之后的SQL语句会被忽略掉,在数据库里执行也不出错,这样就必定能找到第1条记录,就100%成功校验了(实际为select * from uesrtable where usename = '' or 1=1,等同不加任何where条件)
给你一个简单的解决方法,能解决大部分注入:对字符串处理,如果非空,则把所有的单引号替换成双引号
评论列表(0条)