温柔的杀手—跨站ASP Script攻击

来源:网络 作者:佚名 阅读: 字体:[ ] [打印] [关闭]
自定义标签 wzsp 未创建

内容提要:作者: BIBI   每当我们想到黑客的时候,黑客往往是这样一幅画像:一个孤独的人,悄悄进入别人的服务器中,进行破坏或者窃取别人的秘密资料。也许他会更改我们的主页,甚者会窃取客户的信用卡号和密码。另外,黑客 ……

rt1)-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
getdata=BtoS(stemp)
Else ''若为文件,获得文件二进制内容
Getdata=midb (part1, instrb (part1, bncrlf&bncrlf)+lenb (bncrlf&bncrlf), lenb (part1)
-instrb(part1,bncrlf&bncrlf)+lenb(bncrlf&bncrlf))
End If
Final=endpos
End function

  在程序中直接调用该函数就可获得所需文件(或文本框)内容,如下所示:

<%
Content=getdata (data, divider, position)
%>

  3) 获得文件名称
  前面已经分析过了,上传文件数据流的"filename="字段里包含了文件的名称和绝对路 径。一般来说,我们只需提取出路径中的文件名即可,以下是程序代码:

<%
namepos=instrrev(B2S(firstline),chr(92)) ''firstline即上面获得的说明部分数据,chr(92)
表示"/"
filename=midb(firstline,namepos+1,lenb(firstline)-namepos-1) ''获得文件名称
%>

  利用ASP直接实现文件上传功能

  传统的ASP程序员只能利用FILESYSTEMOBJECT对象对文本文件(.txt)进行移动、复制、删除等操作,若需处理二进制对象,则不得不采用本文前面介绍的那些方法来实现。但是,现在ASP中的ADO.STREAM对象可以同时操作文本对象和二进制对象(可以在http://www.microsoft.com/data下载),利用它就可以在ASP中直接实现文件上传功能。下面,我们就介绍其实现过程。

  1)打开STREAM对象

  对于SREAM对象而言,若要进行文件的保存,则必须是将该对象的全部内容进行保存。因此,我们必须要创建两个(或多个)STREAM对象,其中一个为源数据流,即接收初始的二进制数据;另一个为目的数据流,即接收来自经源数据流处理后的数据,并最终保存为所需的文件。

<%
set str=server.CreateObject("ADODB.Stream") ''str为源数据流
str.Mode=3 ''设置打开模式,3为可读可写
str.Type=1 ''设置数据类型,1为二进制数据
str.Open
set desc=server.CreateObject("ADODB.Stream") ''desc为目标数据流
desc.Mode=3
Desc.Type=1
desc.Open
%>

  2)STEAM对象间内容的复制

  在该部分,必须在源数据流中定位文件开始的位置,并且求出文件内容的长度,才能将文件正确的复制到目的数据流中,并且保存文件,程序代码如下:

<%
formdata=Request.BinaryRead(Request.TotalBytes) ''formdata为上传的所有内容
str.Write formdata '' 赋值源数据流
str.position=count-lenb(result)-2 ''position指出文件的开始位置
str.copyto desc, lenb(filecotent) ''lenb(filecontent)表示文件的长度
desc.SaveToFile fullpath,2 ''以fullpath指定的路径及名称保存文件
%>

  3)关闭STEAM对象

  编程完成后,应关闭并释放STEAM对象,如下所示:

<%
Desc. Close
Set desc=nothing
Str. Close
Set STR=nothing
%>

  总结

  本文给出了利用ASP直接实现文件上传的方法,在本单位自行开发的信息管理系统中得到了很好的应用。实践证明:与传统的几种文件上传方法相比,该方法更简便、更高效。

上一页123
[标签: 温柔的杀手—跨站ASP, Script攻击, ] [打印] [关闭]
上一篇:[ASP编程]
下一篇:ASP基础
站长评论(0) 查看所有评论
相关新闻

热门新闻

推荐新闻