本文我们详细介绍了asp数据库被挂木马的详细解决方案之编程处理的方法,解决方案分为以下三步:
第一步:
为现有数据库做好备份。
第二步:
执行如下asp文件,这样就可以去掉数据库当中的js木马:
注:conn.asp自己去写了。
'这里放入js木马内容:请记得改为自己数据库中的js木马内容。
<!--#include file="conn.asp"--> <% server.scripttimeout=180 set rstschema = conn.openschema(20) k=1 do until rstschema.eof '遍历数据库表 if rstschema("table_type")="table" then response.write k&".<font color=red><b>"&rstschema("table_name") & "</b></font>:" '显示表名set rs=server.createobject("adodb.recordset") sql="select * from [" & rstschema("table_name")&"]" rs.open sql,conn,1,3 for i=0 to rs.fields.count-1 '遍历表中字段if int(rs(i).type)=129 or int(rs(i).type)=130 or int(rs(i).type)=200 or int(rs(i).type)=201 or int(rs(i).type)=202 or int(rs(i).type)=203 then'只处理字段类型为字符型的字段 conn.execute("update ["&rstschema("table_name")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'这里放入js木马内容','')") response.write rs(i).name &" "&rs(i).type &" "'显示执行过的字段名。 end if next response.write "<br>" end if rstschema.movenext kk=k+1 loop response.write "执行成功" %>
如果数据库表很多的话,上面的遍历数据库结构未执行完就被iis给停止了。在这时候可以在:
if rstschema("table_type")="table" then
当中适当加入k值的范围,如:
if rstschema("table_type")="table" k>10 and k<20 then
这样的话就一次只操作9个表。
第三步:
根据数据库js注入的特性(会包括<script、</script>和http://这样的字符),在conn.asp里面放入如下代码:
function cheack_sqljs()'防止数据库外链js注入:true为发现外链js注入。 dim f_post,f_get cheack_sqljs=false if request.form<>"" then'表单提交时的检测for each f_post in request.form if (instr(lcase(request.form(f_post)), "<script")<>0 or instr(lcase(request.form(f_post)),"</script>")<>0) and instr(lcase(request.form(f_post)),"http://")<>0 then cheack_sqljs=true exit for end if next end if if request.querystring<>"" then'querystring提交时的检测for each f_get in request.querystring if (instr(lcase(request.form(f_get)),"<script")<>0 orinstr(lcase(request.form(f_get)),"</script>")<>0) and instr(lcase(request.form(f_get)),"http://")<>0 then cheack_sqljs=true exit for end if next end if end function function checkdatafrom()'检查提交数据来源:true为数据从站外提交过来的 checkdatafrom=true server_v1=cstr(request.servervariables("http_referer")) server_v2=cstr(request.servervariables("server_name")) if mid(server_v1,8,len(server_v2))<>server_v2 then checkdatafrom=false end if end function if cheack_sqljs or checkdatafrom then response.write "<script language=javascript>alert('禁止执行,非法操作。');</script>" response.end() end if
关于asp数据库被挂木马时的编程处理方法就介绍到这里了,希望本次的介绍能够带给您一些收获,谢谢!
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!