本文我们详细介绍了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数据库被挂木马时的编程处理方法就介绍到这里了,希望本次的介绍能够带给您一些收获,谢谢!
申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!