|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
<% \\\'ASP防注入之解决方案 \\\'特别页面处理 \\\'因为有些页通过流式传递(比如含有文件上传的表单) \\\'假如单一使用穷举Form对象的操作就会出错 \\\'所以要把这些页面过滤出来,同时在页面中使用sql(\"检测的字串\")才行 \\\'垃圾猪zero@new57.com \\\'http://blog.csdn.net/cfaq \\\'源码下载http://www.new57.com/softback/sql.rar \\\'将本页用include方式放在头部以让所有页都可以调用,比如include在conn.asp里 \\\'假如有流式上传的页面请把该页加到表page中,以防form冲突 Dim N_no,N_noarray,req_Qs,req_F,N_i,N_dbstr,Conn,N_rs,N_userIP,N_thispage N_userip = Request.ServerVariables(\"REMOTE_ADDR\") N_thispage = LCase(Request.ServerVariables(\"URL\")) N_no = \"\\\'|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare\" \\\'可以自己修改怀疑是注入操作的字串 N_noarray = split(LCase(N_no),\"|\") Call DBopen() Call N_check_Qs() Call N_checkPage() Call DBCLose() \\\'检测当前页是否是特别页是就调用 N_check_form() sub N_checkPage() set N_rs = server.CreateObject(\"ADODB.RecordSet\") N_rs.open \"select * from page where spcpage like \\\'%\"&N_thispage&\"%\\\'\",conn,1,1 if (N_rs.eof AND N_rs.Bof) then Call N_check_form() end if N_rs.Close() set N_rs = nothing end sub \\\'检测给定字串 sub N_sql(agsql) \\\'这里是不记录数据库,假如要改请自己修改 N_check \"CUS\",req_Qs,\"OTHER\" end sub \\\'检测Request.Form sub N_check_form() If Request.Form<>\"\" Then For Each req_F In Request.Form N_check req_F,Request.Form(req_F),\"POST\" Next end if end sub \\\'检测Request.QueryString sub N_check_Qs() If Request.QueryString<>\"\" Then For Each req_Qs In Request.QueryString N_check req_Qs,Request.QueryString(req_Qs),\"GET\" Next end if end sub \\\'检测 sub N_check(ag,agsql,sqltype) For N_i=0 To Ubound(N_noarray) If Instr(LCase(agsql),N_noarray(N_i))<>0 Then call N_regsql(ag,agsql,sqltype) Response.Write \"MO\" end if Next end sub \\\'记录并停止输出 \\\'ag 名称 \\\'agsql 内容 \\\'sqltype 类型 sub N_regsql(ag,agsql,sqltype) if(sqltype<>\"OTHER\") then Conn.Execute(\"insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values(\\\'\"&N_userip&\"\\\',\\\'\"&N_thispage&\"\\\',\\\'\"&sqltype&\"\\\',\\\'\"&ag&\"\\\',\\\'\"&agsql&\"\\\')\") end if Response.Write \"<Script Language=JavaScript>alert(\\\'请不要在参数中包含非法字符尝试注入!\\\');</Script>\" Response.Write \"<span style=\\\'font-size:12px\\\'>非法操作!系统做了如下记录↓<br>\" Response.Write \"操作IP:\"&N_userip&\"<br>\" Response.Write \"操作时间:\"&Now&\"<br>\" Response.Write \"操作页面:\"&N_thispage&\"<br>\" Response.Write \"提交方法:\"&sqltype&\"<br>\" Response.Write \"提交参数:\"&ag&\"<br>\" Response.Write \"提交数据:\"&agsql&\"</span>\" Response.end end sub Sub DBopen() N_dbstr=\"DBQ=\"+server.mappath(\"Sql.mdb\")+\";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};\" Set Conn=Server.CreateObject(\"ADODB.CONNECTION\") Conn.open N_dbstr end SUB Sub DBCLose() Conn.close Set Conn = Nothing End sub %> 返回类别: 教程 上一教程: 超级连接在值的传递过程中发生丢失 下一教程: 全面防备asp网站防黑客攻击[我的原创] 您可以阅读与"改进的SQL防注入(加强抑错)"相关的教程: · 改进的ASP备份SQL SERVER数据库 · 一个改进的ASP生成SQL 命令字符串的类 · ASP最新SQL防注入过滤涵数 · 关于SQL注入防备函数 · 如何防范SQL注入 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |