为什么有些网站会被黑,甚至会被删除网站内容,主要原因并不是因为黑客有多大的本事,而是你网站自身存在漏洞,现在比较流行的有SQL注入等漏洞,那怎么去预防他.现在给出以下一些方法.
首先1:后台数据库入口地址一定要复杂不能用诸如ADMIN啊houtai啊一类的文件夹作为管理员的入口,这样就算"黑客"扫到你的密码也无法正确登陆进来哈.
其次:要注意你的UOLOAD文件,检查一下,最好是加个验证,当你登陆后系统有个SESSION参数,在UPLOAD文面判断一下,防止人家直接用海洋顶端一类的木马上传
| 代码: |
<%
if session("admin")=""then response.redirect"error.asp"
%> |
在数据连接文件一般为CONN.ASP里面加防注入的代码把下面的代码放在最开头的地方,或者你也可以从网上查找其他防SQL注入代码
| 代码: |
<%dim sql_injdata
SQL_injdata = ""|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=JavaScript>alert("toy/红骑士提示↓小子请不要在参数中包含非法字符尝试注入!");history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=JavaScript>alert("toy/68590839提示↓小样请不要在参数中包含非法字符尝试注入,就你菜鸟!nnHTTP://www.panasia.cn ");history.back(-1)</Script>"
Response.end
end if
next
next
end if
%> |
最后用工具扫描是否存在漏洞
方法一:FSO
Set fs = CreateObject("Scripting.FileSystemObject")
NewFile=Server.MapPath("/asp/chap06/at/newfile.html")
"新建一文件/newfile.html,若该文件已存在,则覆盖它
Set a = fs.CreateTextFile(NewFile, True)
Response.Write"新文件已建立!"
a.close
File=Server.MapPath("newfile.html")
Set txt=fs.OpenTextFile(File,8,True) "打开成可以在结尾写入数据的文件
data1="这句话是使用WriteLine方法写入的哦!~~"
txt.WriteLine data1
data2="这句话是使用Write方法写入的哦!~~"
txt.Write data2
txt.Close
方法二:XMLHTTP
<%
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
"把下面的地址替换成你的首页的文件地址,一定要用http://开头的绝对路径,不能写相对路径
xml.Open "GET", "
http://www.phpup.com&#..., False
xml.Send
BodyText=xml.ResponseBody
BodyText=BytesToBstr(BodyText,"gb2312")
Set xml = Nothing
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile= fso.CreateTextFile(server.MapPath("aa.htm"), True)
MyFile.WriteLine(BodyText)
MyFile.Close
其他:
1
下面的例子是将、index.asp?id=1/index.asp?id=2/index.asp?id=3/这三个动态
页面,分别生成ndex1.htm,index2.htm,index3.htm存在根目录下面:
<%
dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
Html_Temp="<UL>"
For i=1 To 3
Html_Temp = Html_Temp&"<LI>"
Item_Classid = i
FileName = "Index"&Item_Classid&".htm"
FilePath = Server.MapPath("/")&"\"&FileName Html_Temp = Html_Temp&FilePath&"</LI>"
Do_Url = "
http://"
Do_Url = Do_Url&Request.ServerVariables("SERVER_NAME")&"/main/index.asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid
strUrl = Do_Url
dim objXmlHttp
set objXmlHttp = Server.createObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
Dim binFileData
binFileData = objXmlHttp.responseBody
Dim objAdoStream
set objAdoStream = Server.createObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()
Next
Html_Temp = Html_Temp&"<UL>"
%>
<%
Response.Write ( "成功生成文件:" )
Response.Write ( "<BR>" )
Response.Write Html_Temp
%>
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
%>
2
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
public tempelatefile,tmpdata
sub ofile()"打开文件,并把文件内容放到tmpdata
on error resume next
tmpdata=""
set Astream=Server.CreateObject ("Adodb.Stream")
Astream.type=2"文件类型文本
Astream.Mode = 3"读写
Astream.open
Astream.CharSet = "GB2312""字符集
Astream.LoadFromFile(tempelatefile)"从文件装载
Assp=Astream.size
if err.number<>0 then
xz=-18
response.Write tempelatefile&"<br>"
err.clear
tmpdata=""
else
tmpdata=Astream.ReadText(Assp)
end if
end sub
sub save_file()
ofile()
recfilen=server.MapPath(dts)
Astream.Flush
Astream.close
Astream.type=2
Astream.Mode = 3
Astream.open
Astream.CharSet = "GB2312"
Astream.position=0
Astream.Writetext tmpdata,1"写入数据到stream
Astream.SaveToFile recfilen,2"保存到文件
end sub
function dts()"产生随机文件名
if len(month(now()))>1 then
mm=month(now())
else
mm="0"&month(now())
end if
if len(day(now()))>1 then
d=day(now())
else
d="0"&day(now())
end if
if len(hour(now()))>1 then
h=hour(now())
else
h="0"&hour(now())
end if
if len(minute(now()))>1 then
m=minute(now())
else
m="0"&minute(now())
end if
if len(second(now()))>1 then
s=second(now())
else
s="0"&second(now())
end if
Randomize
upperbound=9999
lowerbound=1000
rds=Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
dts="htm/"&year(now())&mm&d&h&m&s&rds&".htm"
end function
title=request.Form("title")
content=request.Form("content")
tmpdata=replace(tmpdata,"<title></title>",title)"以拥护提交内容替换
tmpdata=replace(tmpdata,"<content></content>",content)
tempelatefile=server.MapPath("tempelate/1.htm")"模版文件
save_file()
%>
最喜欢把TSYS大卸八块了,里面仔细找找,能挖出不少有用的东西,供自己编程用!以前鱼发过一个主题收集站长常用的代码,我觉得有时间的话把TSYS分解一下,不失为一个好话题!
下面是我提取的一个分页功能的示范页,以后ASP分页就用他了,是我用过最方便的!
红色的为重点!
演示:
http://www.zsctrip.com/mem...
| 代码: |
<%Option Explicit%>
<!--#include file="Include/Config.asp" -->
<html>
<head>
<title>member.asp</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="keywords" content="zsctrip user">
<meta name="Version" content="zsctrip user v1.0">
</head>
<body bgcolor="#FFFFFF">
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td> </td>
</tr>
</table>
<%
Dim Rs
Set Rs=Server.CreateObject("ADODB.RecordSet")
Dim Conn
Set Conn = Server.CreateObject("Adodb.Connection")
Conn.Open ConnStr
Dim Sql
Sql="Select * From Dv_User order By UserId DESC"
Rs.PageSize=20 "这里设置单页显示数
Rs.CacheSize=Rs.PageSize
Rs.Open Sql,Conn,1,1
Dim CurrentPage
If Request("CurrentPage")="" Then
CurrentPage=1
Else
CurrentPage=Request("CurrentPage")
End If
If Not(Rs.Eof And Rs.Bof) Then
Rs.AbsolutePage=CurrentPage
End If
Dim sKey,WorkType
%>
<table width="100%" border="0" cellpadding="3" cellspacing="1" class="ContentTabBg">
<tr class="BarTitleBg">
<td width="9%" height="15">记录ID</td>
<td>会员ID</td>
<td>会员EMAIL</td>
<td width="17%" align="center">会员级别</td>
<td width="12%" align="center">编辑</td>
</tr>
<%
Dim I
For I=1 To Rs.PageSize
If Rs.Eof Then
Exit For
End If
%>
<tr>
<td width="9%" height="24" bgcolor="#FFFFFF" class="BarTitle"><%=Rs("UserId")%></td>
<td width="16%" bgcolor="#FFFFFF"><%=Rs("UserName")%></td>
<td width="46%" bgcolor="#FFFFFF"><%=Rs("UserEmail")%></td>
<td width="17%" align="center" bgcolor="#FFFFFF"><%=Rs("UserClass")%></td>
<td width="12%" align="center" bgcolor="#FFFFFF"> </td>
</tr>
<%
Rs.MoveNext
Next%>
</table>
<table width="100%" border="0" cellpadding="5" cellspacing="0">
<tr>
<td align="right">
<script src="Include/Tkl_PageList.js"></script> "关键是这句话跟这个文件
<script>Tkl_PageListBar(<%=Rs.PageCount%>,<%=CurrentPage%>,"")</script> "这里是显示分页的地方!
</td>
</tr>
</table>
<%
Rs.Close
Set Rs=Nothing
%>
</body>
</html>
|