asp.net如何获取一个服务器上一个文件夹的地址
DirectoryInfo dir=new DirectoryInfo("D:\\"); //获取d盘下文件夹及文件
DirectoryInfo[] subDirs=dirGetDirectories(); //获取所有子文件夹
FileInfo[] subFiles=dirGetFiles(); //获取该文件夹中所有文件
ASP本身不能实现该功能,但是可以用具有读写二进制文件功能的AdodbStream对象来间接实现
<%
'下面这段即可获得你要的那的宽和高
imgpath="images/photo/abcjpg"
set pp=new imgInfo
w = ppimgW(servermappath(imgpath))
h = ppimgH(servermappath(imgpath))
set pp=nothing
%>
<%
'这一段是所要用的类
Class imgInfo
dim aso
Private Sub Class_Initialize
set aso=CreateObject("AdodbStream")
asoMode=3
asoType=1
asoOpen
End Sub
Private Sub Class_Terminate
errclear
set aso=nothing
End Sub
Private Function Bin2Str(Bin)
Dim I, Str
For I=1 to LenB(Bin)
clow=MidB(Bin,I,1)
if ASCB(clow)<128 then
Str = Str & Chr(ASCB(clow))
else
I=I+1
if I <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
end if
Next
Bin2Str = Str
End Function
Private Function Num2Str(num,base,lens)
dim ret
ret = ""
while(num>=base)
ret = (num mod base) & ret
num = (num - num mod base)/base
wend
Num2Str = right(string(lens,"0") & num & ret,lens)
End Function
Private Function Str2Num(str,base)
dim ret
ret = 0
for i=1 to len(str)
ret = ret base + cint(mid(str,i,1))
next
Str2Num=ret
End Function
Private Function BinVal(bin)
dim ret
ret = 0
for i = lenb(bin) to 1 step -1
ret = ret 256 + ascb(midb(bin,i,1))
next
BinVal=ret
End Function
Private Function BinVal2(bin)
dim ret
ret = 0
for i = 1 to lenb(bin)
ret = ret 256 + ascb(midb(bin,i,1))
next
BinVal2=ret
End Function
Private Function getImageSize(filespec)
dim ret(3)
asoLoadFromFile(filespec)
bFlag=asoread(3)
select case hex(binVal(bFlag))
case "4E5089":
asoread(15)
ret(0)="PNG"
ret(1)=BinVal2(asoread(2))
asoread(2)
ret(2)=BinVal2(asoread(2))
case "464947":
asoread(3)
ret(0)="GIF"
ret(1)=BinVal(asoread(2))
ret(2)=BinVal(asoread(2))
case "535746":
asoread(5)
binData=asoRead(1)
sConv=Num2Str(ascb(binData),2 ,8)
nBits=Str2Num(left(sConv,5),2)
sConv=mid(sConv,6)
while(len(sConv)<nBits4)
binData=asoRead(1)
sConv=sConv&Num2Str(ascb(binData),2 ,8)
wend
ret(0)="SWF"
ret(1)=int(abs(Str2Num(mid(sConv,1nBits+1,nBits),2)-Str2Num(mid(sConv,0nBits+1,nBits),2))/20)
ret(2)=int(abs(Str2Num(mid(sConv,3nBits+1,nBits),2)-Str2Num(mid(sConv,2nBits+1,nBits),2))/20)
case "FFD8FF":
do
d p1=binVal(asoRead(1)): loop while p1=255 and not asoEOS
if p1>191 and p1<196 then exit do else asoread(binval2(asoRead(2))-2)
dp1=binVal(asoRead(1)):loop while p1<255 and not asoEOS
loop while true
asoRead(3)
ret(0)="JPG"
ret(2)=binval2(asoRead(2))
ret(1)=binval2(asoRead(2))
case else:
if left(Bin2Str(bFlag),2)="BM" then
asoRead(15)
ret(0)="BMP"
ret(1)=binval(asoRead(4))
ret(2)=binval(asoRead(4))
else
ret(0)=""
end if
end select
ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""
getimagesize=ret
End Function
Public Function imgW(pic_path)
Set fso1 = serverCreateObject("ScriptingFileSystemObject")
If (fso1FileExists(pic_path)) Then
Set f1 = fso1GetFile(pic_path)
ext=fso1GetExtensionName(pic_path)
select case ext
case "gif","bmp","jpg","png":
arr=getImageSize(f1path)
imgW = arr(1)
end select
Set f1=nothing
else
imgW = 0
End if
Set fso1=nothing
End Function
Public Function imgH(pic_path)
Set fso1 = serverCreateObject("ScriptingFileSystemObject")
If (fso1FileExists(pic_path)) Then
Set f1 = fso1GetFile(pic_path)
ext=fso1GetExtensionName(pic_path)
select case ext
case "gif","bmp","jpg","png":
arr=getImageSize(f1path)
imgH = arr(2)
end select
Set f1=nothing
else
imgH = 0
End if
Set fso1=nothing
End Function
End Class
%>
'参考一下。
'这种情况一般可以通过传递一个变量来判断,这样不依托IIS类型,可以跨平台使用
'在页面开始处设置下面内容
op=Lcase(ServerHtmlEncode(Request("op")))
'如果页面包含很多具体内容页面可在这里判断下当直接输入如aaaasp后出现的界面
If op="" then '强制初始化为数据添加add页面
op="add"
End If
'根据OP判断应显示的页面
Select Case op
Case "add"
'你添加记录的表单页面
'设置表单action="op=addok"
Case "addok"
'数据获取/处理页面内容
Case Else '这个用来过滤非法的op输入
ResponseWrite "错误的数据来源或提交方式"
ResponseEnd
End Select
朋友,ASP是在服务器端运行的网页文件,网页不同于别的软件系统,在客户端只有结果
主要有两点:
1客户端的浏览器它只是负责显示,显示的是在在服务器端运行的结果
2客户端的浏览器也可以提交数据到服务器,由服务器再处理,再把结果发送到客户端的浏览器显示
这是个大体的思想具体实现是怎么样,由编程者设计才算
<html>
<head>
<link href="/csscss" rel="stylesheet" type="text/css">
</head>
<body>
<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#336699">
<tr bgcolor="" align="center">
<td height="20" colspan="2" class="htd" ><font color="#FFFFFF"><b>服 务 器 的 配 置</b></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">检取ISAPIDLL的metabase路径</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("APPL_MD_PATH")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">路径信息</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("PATH_INFO")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">服务器IP地址</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("LOCAL_ADDR")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">显示执行SCRIPT的虚拟路径</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("SCRIPT_NAME")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">返回服务器的主机名,DNS别名,或IP地址</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("SERVER_NAME")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">返回服务器处理请求的端口</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("SERVER_PORT")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">协议的名称和版本</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("SERVER_PROTOCOL")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">服务器的名称和版本</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("SERVER_SOFTWARE")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">服务器操作系统内核</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("OS")%></font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">脚本超时时间</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=ServerScriptTimeout%> 秒</font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">服务器CPU数量</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=RequestServerVariables("NUMBER_OF_PROCESSORS")%> 个</font></td>
</tr>
<tr>
<td width="40%" align="center" bgcolor="#336699" class="htd"><font color="#FFFFFF">服务器解译引擎</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=ScriptEngine & "/"& ScriptEngineMajorVersion &""&ScriptEngineMinorVersion&""& ScriptEngineBuildVersion %></font></td>
</tr>
</table>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td height="20" colspan="2" align="center">
</td>
</tr>
<tr>
<td height="20" colspan="2" class="htd" align="center" bgcolor="#336699">
<font color="#FFFFFF"><b>浏 览 器 信 息</b></font>
</td>
</tr>
<tr>
<td height="20" colspan="2" align="center" bgcolor="#336699">
<%set browscap=servercreateobject("mswcbrowsertype")%>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">浏览器类型</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapbrowser%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">浏览器版本</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapversion%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持表格</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscaptables%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持ActiveX控件</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapactivexcontrols%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持JavaApplets</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapjavaapplets%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持Javascript</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapjavascript%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持Cookies</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapcookies%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持框架</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapframes%></font></td></tr>
<tr><td width="40%" align="center" class="htd"><font color="#FFFFFF">是否支持VBScript</font></td>
<td align="center" bgcolor="#3366CC" class="htd"><font color="#FFf000"><%=browscapvbscript%></font></td></tr>
</table>
<%set browscap=nothing%>
</td>
</tr>
</table>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<td height="20" colspan="2" align="center">
</td>
</tr>
<tr>
<td height="20" colspan="2" class="htd" align="center" bgcolor="#336699">
<font color="#FFFFFF"><b>磁 盘 驱 动 器 信 息</b></font>
</td>
</tr>
<tr>
<td height="20" colspan="2" >
<%
function tran(driver)
select case driver
case 0:tran="设备无法识别"
case 1:tran="软盘驱动器"
case 2:tran="硬盘驱动器"
case 3:tran="网络硬盘驱动器"
case 4:tran="光盘驱动器"
case 5:tran="RAM虚拟磁盘"
end select
end function
set fso=servercreateobject("scriptingfilesystemobject")
%>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#336699">
<tr><td class="htd" align="center"><font color="#FFFFFF">盘符</font></td><td class="htd" align="center"><font color="#FFFFFF">类型</font></td><td class="htd" align="center"><font color="#FFFFFF">卷标</font></td>
<td class="htd" align="center"><font color="#FFFFFF" >总计大小</font></td><td class="htd" align="center"><font color="#FFFFFF">可用空间</font></td><td class="htd" align="center"><font color="#FFFFFF">文件系统</font></td>
<td class="htd" align="center"><font color="#FFFFFF">序列号</font></td><td class="htd" align="center"><font color="#FFFFFF">是否可用</font></td><td class="htd" align="center"><font color="#FFFFFF">路径</font></td>
</tr>
<%
for each drv in fsodrives
responsewrite"<tr>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvdriveletter &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & tran(drvdrivetype) &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvvolumename &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & formatnumber(drvtotalsize/1024,0) &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & formatnumber(drvavailablespace/1024,0) &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvfilesystem &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvserialnumber &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvisready &"</font></td>"
responsewrite"<td class=htd align=center bgcolor=#3366CC><font color=#FFf000>" & drvpath &"</font></td>"
next
%>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
第一步 首先你先进行批量删除木马 或者从新上传一份 并且修改后台地址 帐号和密码
第二步 检测你网站 是不是有过滤不严格的现象 如果有在网上找个SQL防注入的代码
第三步 检测你的程序上传 数据库备份 以及论坛的数据库备份 如果站上有数据库备份的话 删除就可以 要备份数据库完全可以使用FTP来备份 其次就是上传了 上传入侵很多种 你用的什么程序 你就在baidu里找一下你的上传漏洞分析解决方法就可以
第四步 如果站点还出现被挂马现象 那就是服务器问题了 你要是SQL的话 你要数据库做分离了 不要在同一个服务器就可以了
我在网上给你找了点材料 你看一下 希望对你有帮助
防范ASP木马的十大基本原则 [来源:jit8 BLOG]
本文章地址:http://tech163com/05/1107/11/21V0IUDU000917GFhtml
由于ASP它本身是服务器提供的一贡服务功能,特别是最近由dvbbs的upfile文件出现漏洞以来,其高度的隐蔽性和难查杀性,对网站的安全造成了严重的威胁。因此针对ASP木马的防范和清除,为网管人员提出了更高的技术要求
几个大的程序全部被发现存在上传漏洞,小程序更是不计其数,让asp木马一下占据了主流,得到广泛的使用,想必如果你是做服务器的话,一定为此头疼不止吧,特别是虚拟主机的用户都遇到过网页被篡改、数据被删除的经历,事后除了对这种行径深恶痛绝外,许多客户又苦于没有行之有效的防范措施。鉴于大部分网站入侵都是利用asp木马完成的,特写此文章以使普通虚拟主机用户能更好地了解、防范asp木马。也只有空间商和虚拟主机用户共同做好防范措施才可以有效防范asp木马!
我们首先来说一下怎么样防范好了,说到防范我们自然要对asp木马的原理了,大道理我也不讲了,网上的文章有的是,简单的说asp木马其实就是用asp编写的网站程序,甚至有些asp木马就是由asp网站管理程序修改而来的。就比如说我们常见的asp站长助手,等等
它和其他asp程序没有本质区别,只要是能运行asp的空间就能运行它,这种性质使得asp木马非常不易被发觉。它和其他asp程序的区别只在于asp木马是入侵者上传到目标空间,并帮助入侵者控制目标空间的asp程序。严重的从而获取服务器管理员的权限,要想禁止asp木马运行就等于禁止asp的运行,显然这是行不通的,这也是为什么asp木马猖獗的原因!有人要问了,是不是就没有办法了呢,不,有办法的:
第一:从源头入手,入侵者是怎么样上传asp木马的呢?一般哟几种方法,通过sql注射手段,获取管理员权限,通过备份数据库的功能将asp木马写入服务器。或者进入后台通过asp程序的上传功能的漏洞,上传木马等等,当然正常情况下,这些可以上传文件的asp程序都是有权限限制的,大多也限制了asp文件的上传。(比如:可以上传的新闻发布、管理程序,及可以上传更多类型文件的论坛程序等),如果我们直接上传asp木马的话,我们会发现,程序会有提示,是不能直接上传的,但由于存在人为的asp设置错误及asp程序本身的漏洞,给了入侵者可乘之机,实现上传asp木马。
因此,防范asp木马的重点就在于虚拟主机用户如何确保自己空间中asp上传程序的安全上,如果你是用别人的程序的话,尽量用出名一点的大型一点的程序,这样漏洞自然就少一些,而且尽量使用最新的版本,并且要经常去官方网站查看新版本或者是最新补丁,还有就是那些数据库默认路径呀,管理员密码默认呀,一定要改,形成习惯保证程序的安全性。
那么如果你是程序员的话,我还想说的一点就是我们在网站程序上也应该尽量从安全的角度上编写涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限; 需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。防止ASP主页inc文件泄露问题; 防止UE等编辑器生成someaspbak文件泄露问题等等特别是上传功能一定要特别注意
上面的只是对客户的一些要求,但是空间商由于无法预见虚拟主机用户会在自己站点中上传什么样的程序,以及每个程序是否存在漏洞,因此无法防止入侵者利用站点中客户程序本身漏洞上传asp木马的行为。空间商只能防止入侵者利用已被入侵的站点再次入侵同一服务器上其他站点的行为。这也更加说明要防范asp木马,虚拟主机用户就要对自己的程序严格把关! 为此我总结了ASP木马防范的十大原则供大家参考:
1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。
2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。
这其中包括各种新闻发布、商城及论坛程序,只要可以上传文件的asp都要进行身份认证!
3、asp程序管理员的用户名和密码要有一定复杂性,不能过于简单,还要注意定期更换。
4、到正规网站下载asp程序,下载后要对其数据库名称和存放路径进行修改,数据库文件名称也要有一定复杂性。
5、要尽量保持程序是最新版本。
6、不要在网页上加注后台管理程序登陆页面的链接。
7、为防止程序有未知漏洞,可以在维护后删除后台管理程序的登陆页面,下次维护时再通过ftp上传即可。
8、要时常备份数据库等重要文件。
9、日常要多维护,并注意空间中是否有来历不明的asp文件。记住:一分汗水,换一分安全!
10、一旦发现被入侵,除非自己能识别出所有木马文件,否则要删除所有文件。
重新上传文件前,所有asp程序用户名和密码都要重置,并要重新修改程序数据库名称和存放路径以及后台管理程序的路径。
做好以上防范措施,您的网站只能说是相对安全了,决不能因此疏忽大意,因为入侵与反入侵是一场永恒的战争
我项目里面用到的,第一个是读取,下面一个是写入和更改。
protected void BindSetting()
{
DataSet ds = new DataSet();
dsReadXml(ServerMapPath("~/Setting/Score_Settingsxml"));
DataRow dr = dsTables["Setting"]Rows[0];
TextBoxRegScoreText = dr["RegScore"]ToString();
TextBoxPerfectScoreText = dr["PerfectScore"]ToString();
TextBoxMemberCardScoreText = dr["MemberCardScore"]ToString();
TextBoxDevelopMemberScoreText = dr["DevelopMemberScore"]ToString();
TextBoxShopScoreText = dr["ShopScore"]ToString();
TextBoxSendScoreText = dr["SendScore"]ToString();
TextBoxGroupBuyActivityScoreText = dr["GroupBuyActivityScore"]ToString();
TextBoxBirthdayScoreText = dr["BirthdayScore"]ToString();
TextBoxFeastScoreText = dr["FeastScore"]ToString();
}
protected void ButtonEdit_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
dsReadXml(ServerMapPath("~/Setting/Score_Settingsxml"));
DataRow dr = dsTables["Setting"]Rows[0];
dr["RegScore"] = TextBoxRegScoreText;
dr["PerfectScore"] = TextBoxPerfectScoreText;
dr["MemberCardScore"] = TextBoxMemberCardScoreText;
dr["DevelopMemberScore"] = TextBoxDevelopMemberScoreText;
dr["ShopScore"] = TextBoxShopScoreText;
dr["SendScore"] = TextBoxSendScoreText;
dr["GroupBuyActivityScore"] = TextBoxGroupBuyActivityScoreText;
dr["BirthdayScore"] = TextBoxBirthdayScoreText;
dr["FeastScore"] = TextBoxFeastScoreText;
dsWriteXml(ServerMapPath("~/Setting/Score_Settingsxml"));
dsAcceptChanges();
}
0条评论