发表日期:2018-12-19 16:01:00 文章编辑:admin
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击,当然现在的网站已经很少有sql注入(get,post,cookie)了,但是有些网站还是存在这样的问题,比如说经常用别人模板的人,有些模板下面的文件目录下包含了当前网站的一些信息,你不及时发现就会给攻击者可乘之机,PHP网站的建设者一定要注意模板使用方面的问题。
判断是否存在Cookies SQL注入漏洞,使用IE内核浏览器,地址栏输入
javascript:alert(document.cookie="id="+escape("222"));
这句代码要手写输入,直接粘贴的话浏览器会去掉前面的JavaScript。
执行以后会弹出对话框,id=222,此时便创建了一个cookies,名称id,值为222,访问带id的网址,例如之前为news.asp?id=222,现在只需要访问news.asp,假如依然可以看到之前的内容,表示存在该漏洞。
而修复方案,也很简单,直接过滤判断即可,下面直接奉上代码,解决get、post还有cookies三个的解决方案。
<% Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name '------定义部份 头---------------------------------------------------------------------- Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Err_Web = "Err.Asp" '出错时转向的页面 Query_Badword="'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥=" '在这部份定义get非法参数,使用"∥"号间隔 Form_Badword="'∥%∥&∥*∥#∥(∥)∥=" '在这部份定义post非法参数,使用"∥"号间隔 '------定义部份 尾----------------------------------------------------------------------- ' On Error Resume Next '----- 对 get query 值 的过滤. if request.QueryString<>"" then Chk_badword=split(Query_Badword,"∥") FOR EACH Query_Name IN Request.QueryString for i=0 to ubound(Chk_badword) If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then Select Case Err_Message Case "1" Response.Write "" Case "2" Response.Write "" Case "3" Response.Write "" End Select Response.End End If NEXT NEXT End if '----- 对 cookies 值 的过滤. if request.Cookies<>"" then Chk_badword=split(Query_Badword,"∥") FOR EACH Query_Name IN Request.Cookies for i=0 to ubound(Chk_badword) If Instr(LCase(request.Cookies(Query_Name)),Chk_badword(i))<>0 Then Select Case Err_Message Case "1" Response.Write "" Case "2" Response.Write "" Case "3" Response.Write "" End Select Response.End End If NEXT NEXT End if '-----对 post 表 单值的过滤. if request.form<>"" then Chk_badword=split(Form_Badword,"∥") FOR EACH name IN Request.Form for i=0 to ubound(Chk_badword) If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then Select Case Err_Message Case "1" Response.Write "" Case "2" Response.Write "" Case "3" Response.Write "" End Select Response.End End If NEXT NEXT end if %>
十年互联网络服务经验 专业网站建设推广团队 专业网店装修运营团队 专业小程序开发运营团队 产品摄影、设计配套设施完善 优化群发、霸屏竞价推广齐全 售后人员一对一指导售后放心 新项目上线老客户体验价优惠
赤霄网络成立于2014年8月,是一家专业从事于网站建设与运营,新媒体营销推广和空间域名租用销售,软件研发定制等业务的创新创业型公司,提供互联网基础服务,助企业顺利踏上电商之路。
武汉赤霄网络科技有限公司 备案号:鄂ICP备14013644号-1鄂公网安备 42011102001670号 电子亮照: