ASP网页编程之ASP处置数据库被挂马的办法
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。数据库被挂马我信任良多人都碰着过。在这里,我讲下我处置的办法。数据库被挂马我信任良多人都碰着过。在这里,我讲下我处置的办法。第一步:为现无数据库做好备份。
第二步:
实行以下ASP文件,如许就能够往失落数据库傍边的JS木马:
注:conn.asp本人往写了。
这里放进JS木马内容:请记得改成本人数据库中的JS木马内容。
<!--#includefile="conn.ASP"-->
<%
Server.ScriptTimeOut=180
SetrstSchema=conn.OpenSchema(20)
k=1
DoUntilrstSchema.EOF遍历数据库表
IfrstSchema("TABLE_TYPE")="TABLE"Then
response.writeK&".<fontcolor=red><b>"&rstSchema("TABLE_NAME")&"</b></font>:"显现表名
Setrs=Server.CreateObject("ADODB.Recordset")
sql="select*from["&rstSchema("TABLE_NAME")&"]"
rs.opensql,conn,1,3
Fori=0tors.fields.count-1遍历表中字段
Ifint(rs(i).Type)=129orint(rs(i).Type)=130orint(rs(i).Type)=200orint(rs(i).Type)=201orint(rs(i).Type)=202orint(rs(i).Type)=203Then只处置字段范例为字符型的字段
conn.execute("update["&rstSchema("TABLE_NAME")&"]set"&rs(i).name&"=replace(cast("&rs(i).name&"asvarchar(8000)),这里放进JS木马内容,)")
response.writers(i).name&""&rs(i).Type&""显现实行过的字段名。
EndIf
Next
response.write"<br>"
EndIf
rstSchema.MoveNext
k=k+1
Loop
response.Write"实行乐成"
%>
假如数据库表良多的话,下面的遍历数据库布局未实行完就被IIS给中断了。在这时候候能够在
IfrstSchema("TABLE_TYPE")="TABLE"Then
傍边得当到场k值的局限,如:
IfrstSchema("TABLE_TYPE")="TABLE"k>10andk<20Then
如许的话就一次只操纵9个表。
第三步:
依据数据库JS注进的特征(会包含<script、</script>和http://如许的字符),
在conn.ASP内里放进以下代码:
FunctionCheack_Sqljs()避免数据库外链JS注进:true为发明外链JS注进。
DimF_Post,F_Get
Cheack_Sqljs=False
IfRequest.Form""Then表单提交时的检测
ForEachF_PostInRequest.Form
If(Instr(LCase(Request.Form(F_Post)),"<script")0orInstr(LCase(Request.Form(F_Post)),"</script>")0)andInstr(LCase(Request.Form(F_Post)),"http://")0Then
Cheack_Sqljs=True
ExitFor
EndIf
Next
EndIf
IfRequest.QueryString""ThenQueryString提交时的检测
ForEachF_GetInRequest.QueryString
If(Instr(LCase(Request.Form(F_Get)),"<script")0orInstr(LCase(Request.Form(F_Get)),"</script>")0)andInstr(LCase(Request.Form(F_Get)),"http://")0Then
Cheack_Sqljs=True
ExitFor
EndIf
Next
EndIf
EndFunction
FunctionCheckDataFrom()反省提交数据True为数据从站外提交过去的
CheckDataFrom=True
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
ifmid(server_v1,8,len(server_v2))server_v2then
CheckDataFrom=False
endif
EndFunction
IfCheack_SqljsorCheckDataFromThen
Response.Write"<ScriptLanguage=JavaScript>alert(克制实行,不法操纵。);</Script>"
Response.End()
EndIf
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
页:
[1]