本文关于黑客入侵手法,据
亚洲金融智库2022-05-04日讯:
第一套 胜战计 第一计 瞒天过海 第二计 围魏救赵 第三计 借刀杀人 第四计 以逸待劳 第五计 趁火打劫 第六计 声东击西 第二套 敌战计 第七计 无中生有 第八计 暗渡陈仓 第九计 隔岸观火 第十计 笑里藏刀 第十一计 李代桃僵 第十二计 顺手牵羊 第三套 攻战计 第十三计 打草惊蛇 第十四计 借尸还魂 第十五计 调虎离山 第十六计 欲擒故纵 第十七计 抛砖引玉 第十八计 擒贼擒王 第四套 混战计 第十九计 釜底抽薪 第二十计 混水摸鱼 第二十一计 金蝉脱壳 第二十二计 关门捉贼 第二十三计 远交近攻 第二十四计 假途伐虢 第五套 并战计 第二十五计 偷梁换柱 第二十六计 指桑骂槐 第二十七计 假痴不颠 第二十八计 上屋抽梯 第二十九计 树上开花 第三十计 反客为主 第六套 败战计 第三十一计 美人计 第三十二计 空城计 第三十三计 反间计 第三十四计 苦肉计 第三十五计 连环计 第三十六计 走为上
都是高手哦。。。
避免mysql注入应该避免有哪些特殊字符
特殊字符有:
SQL中通配符的使用
SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
你可以学习一下如何防止MYSQL被注入。一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。二、SQL注入攻击的总体思路1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不通的服务器和数据库特点进行SQL注入攻击 三、SQL注入攻击实例比如在一个登录界面,要求输入用户名和密码:可以这样输入实现免帐号登录:用户名: ‘or 1 = 1 密 码:点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)这是为什么呢? 下面我们分析一下:从理论上说,后台认证程序中会有如下的SQL语句:String sql = select * from user_table where username=' +userName+ ' and password=' +password+ ';当输入了上面的用户名和密码,上面的SQL语句变成:SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’分析SQL语句:条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。这还是比较温柔的,如果是执行SELECT * FROM user_table WHEREusername='' ;DROP DATABASE (DB Name) --' and password=''….其后果可想而知… 四、应对方法下面我针对JSP,说一下应对方法:1.(简单又有效的方法)PreparedStatement采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。使用好处:(1).代码的可读性和可维护性.(2).PreparedStatement尽最大可能提高性能.(3).最重要的一点是极大地提高了安全性.原理:sql注入只对sql语句的准备(编译)过程有破坏作用而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析,准备,因此也就避免了sql注入问题. 2.使用正则表达式过滤传入的参数要引入的包:import java.util.regex.*;正则表达式: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等等….. 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注入只要在代码规范上下点功夫就可以了。凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement就可以 ,切记不要用拼接字符串的方法就可以了。
专题推荐:
避免(36)注入(2)字符(1)