SQL注入漏洞修复办法
按照百度说法,SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。其实就是就是提交精心构造的数据库语句,使其反馈一些有用的数据。说白了就是去欺骗数据库,假如只有web服务器的话,是没法进行SQL注入的。
网上常用的注入手法有两种,一种是猜测,让数据库暴出用户名、密码等信息;另一种直接绕过认证,取得权限。相对应,要想修复此类漏洞,就必须禁止特殊数据的提交或将特殊提交的数据修改。
下面是不同脚本语言下的防注入过滤代码,其实思想是一致的。
1、 PHP防注入过滤代码
/*************************
说明: 判断传递的变量中是否含有非法字符 如$_POST、$_GET
功能: 防注入
使用方法: 将下列代码保存为ak,php,调用方式 在数据提交页加上include("ak.php");
**************************/
<?php function dowith_sql($str) //实现将特征码两边加. { $refuse_str="exec|and|or|select|update|from|where|order|by|*|delete|'|insert|into|values|create|table| database|set|char|asc|cast|declare|<script|script|iframe|3bomb|c.js|;"; |
上面的防注入的方法只是防了GET与POST方法提交的数据,但是,WEB服务器读取数据的顺序是,先取GET中的数据,没有再去POST中的数据,没有还会再去COOKIES中的数据,上面的代码还没有防cookies注入。防cookies注入就比较简单了,cookies的id值一般只为阿拉伯数字,但是cookies注入必须得在id中构造代码,只要在获得参数UID后,对其进行过滤就可以了,代码如下:
<?php |
将上述代码保存为hk.php。所以在平时应用时,在网页上加上include("ak.php");与include("hk.php");
2、asp防注入过滤代码
'--------说明------------------
'使用方法: 在需要防注的页面头部用 <!--#Include File="sql2.asp"-->包含就可以了
'友情提示:把代码复制到CONN.asp(数据库连接文件) 那么,只要包含了CONN的所有文件都防注了
<% For xf_Xh=0 To Ubound(xf_Inf) Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>" |
同样,再将cookies防一下,代码加在数据提交页。
if(Request.Cookies["uid"]!=null) { uid=Request.Cookies["uid"].value; isnumeric cooidesID = new isnumeric(); //这是一个类 if (cooidesID.reIsnumeric(ruid)) //如果是数字就运行下面的 { string str="select * from userTable where id="+uid; ... } } |
3、 JSP防注入过滤代码
<script language="javascript"> <!-- var url = location.search; // 函数location.search作用是取?之后的参数值,取得 QueryString 部分 var re=/^?(.*)(select%20|insert%20|delete%20from%20|count(|drop%20table|update%20truncate%20|asc(|mid(|char(|xp_cmdshell|exec%20master|net%20localgroup%20administrators|"|:|net%20user||%20or%20)(.*)$/gi; //定义特殊字符串 var e = re.test(url); //test()字符串中是否有匹配正则表达式的子字符串。返回true或false。 if(e) { alert("地址中含有非法字符~"); location.href="error.asp"; } //--> <script> |
当然,我们也可以定义过滤函数,直接应用到用户名、密码等提交的数据参数上,函数如下:
function checkuseravoid(str){ var inj_str="‘|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,"; var sarray=new Array(); sarray=inj_str.split('|'); for (var i=0 ;i <inj_stra.length ;i++ ) { if (str.indexOf(inj_stra)>=0) return true; } return false; } |
4、C#防注入过滤代码
//这个例子里暂定为=号和号,可继续添加 bool CheckParams(params object[] args) { string[] Lawlesses={"=",""}; if(Lawlesses==null||Lawlesses.Length<=0)return true; |
构造正则表达式,例:Lawlesses是=号和号,则正则表达式为 .*[=}].*
另外,由于我是想做通用而且容易修改的函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可;
string str_Regex=".*["; for(int i=0;i< Lawlesses.Length-1;i++) str_Regex+=Lawlesses+"|"; str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*"; // foreach(object arg in args) { if(arg is string) //如果是字符串,直接检查 { if(Regex.Matches(arg.ToString(),str_Regex).Count>0) return false; } else if(arg is ICollection) //如果是一个集合,则检查集合内元素是否字符串,是字符串,就进行检查 { foreach(object obj in (ICollection)arg) { if(obj is string) { if(Regex.Matches(obj.ToString(),str_Regex).Count>0) return false; } } } } return true; |
转载于:https://blog.51cto.com/edsoki/542656
SQL注入漏洞修复办法相关推荐
- 关于ECSHOP中sql注入漏洞修复
标签:ecshop sql注入漏洞修复 公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程 ...
- mysql sql注入漏洞修复_从Java角度修复SQL注入漏洞
很多情况因为过滤不严导致很多网站存在sql注入,这里以用户登陆为例,简单举例 首先创建一个测试的数据库 比较基础,不写创建过程了 java代码如下: packagecn.basic.jdbc;impo ...
- 织梦Dedecms的album_add.php文件SQL注入漏洞修复方法
dedecms的/dedecms/member/album_add.php文件中,对输入参数mtypesid未进行int整型转义,导致SQL注入的发生. 修复方法: 打开dedecms/member/ ...
- /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -
DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 目前官方最新版已修复该漏洞 V5.7.37 GBK正式版20140228常规更新补丁 http://www.dedecms.com/pl/ ht ...
- Sophos 修复 Cyberoam OS 中的 SQL 注入漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Sophos 公司为 Cyberoam 防火墙和路由器发布热补丁,修复一个 SQL 注入漏洞. Sophos 在2014年收购防火墙和 ...
- album add.php 修复,dedecms SQL注入漏洞 member/album_add.php 修复
dedecms的/dedecms/member/album_add.php文件中,对输入参数mtypesid未进行int整型转义,导致SQL注入的发生. 打开文件:/member/album_add. ...
- php sql漏洞修复,php sql注入漏洞与修复
出于安全考虑,需要过滤从页面传递过来的字符. 通常,用户可以通过以下接口调用数据库的内容:URL地址栏.登陆界面.留言板.搜索框等. 轻则数据遭到泄露,重则服务器被拿下. 一.SQL注入的步骤 a) ...
- SQL 登录注入脚本_vBulletin再修复高危RCE和SQL注入漏洞
上个月末,vBulletin刚发布了一个针对高危远程代码执行漏洞的补丁,又在最近发布了一个全新安全补丁,针对了软件中的另外3个严重漏洞. 此次牵涉的漏洞影响vBulletin 5.5.4及以前的版本, ...
- java 框架注入漏洞修复_Mybatis框架下易产生SQL注入漏洞的场景和修复方法
一.Mybatis框架下易产生SQL注入漏洞的场景 在基于Mybatis框架的Java白盒代码审计工作中,通常将着手点定位在Mybatis的配置文件中.通过查看这些与数据库交互的配置文件来确定SQL语 ...
最新文章
- 点云深度学习的Pytorch框架
- oracle绑定变量赋值,Oracle教程之绑定变量
- 如何实施异构服务器的负载均衡及过载保护?
- 区间数计算之Python实现
- jQuery计算器插件
- (Oracle学习笔记) sql*plus命令
- 天谕手游里的NPC真的很好看,画风特别的靓,背景音乐是万茜唱的
- 基于Spring Boot不同的环境使用不同的配置方法
- java比较字符能用等于号码_Java字符串比较,==,等于,匹配,compareTo()之间的差异。...
- 深入linux中重定向及管道详解
- 将windows7安装到映像文件方法总结
- 怎么区分zh和ch_zh,ch,sh,和z,c,s怎么分辨?
- 基环树DP(bzoj 1040: [ZJOI2008]骑士)
- linux nmon 进程io,Linux服务器用iotop命令分析服务器磁盘IO情况
- python usb通信测试
- 数说CS|浙江大学计算机科学与技术学院是怎样的存在?
- 汇编语言程序设计51单片机
- protobuf 中 repeated fields 细节
- HTML frameset 标签 cols 属性
- mac pro M1(ARM)安装:centos8.0虚拟机
热门文章
- c++工作笔记001---c++相关零碎要点_endl、“\n”和‘\n’区别_extern int a关键字_-的意思_::的意思_指针和引用的区别
- SpringMVC工作总结001_SpringMVC拦截器(资源和权限管理)
- EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
- volatile和原子操作
- python built-in cache (don't reinvent the wheel)
- tar:归档中找不到 tar: 由于前次错误,将以上次的错误状态退出
- Php 小视频存储,用PHP保存远程视频到本机电脑的小插件
- java 中生成文档_在Java中生成专业的公文文档
- Kafka 安装与部署(单机版)与kafkaDemo调试测试(包含JAVA Demo)
- python编程(multiprocessing库)