ASP

ASP下载系统防盗链三种方法

第一方法
两个文件,第一个文件(例子中的index.asp)负责产生随机的下载链接,并将密匙写入COOKIE;第二个文件(例子中的download.asp)
根据COOKIE找到实际下载地址,然后使用Response.AddHeader和Server.Transfer来重定向地址。
为什么不使用Response.Redirect呢?是因为Response.Redirect是在客户端的重定向。
如果使用Response.Redirect,那么真实的下载地址还是传给了客户端,这样防盗链的作用就小了很多,用MYIE等等浏览器或工具都可以轻易的获得真实下载地址。而IIS5.0中提供的Server.Transfer是服务器端的重定向,与客户端无关,这样客户端就无法获得真实的下载地址。

下面是ID为1的下载文件TTT.EXE的防盗链示例程序,具体内容如下:

<%
<! - - - - - - - - - - - - - - - index.asp - - - - - - - - - - - - - - - - - >
Response.Write "下载地址:"
Randomize
x = Int(Rnd() * 1000)
Response.Write "<a id="1">ttt.exe</a>"
'这里只是简单的运算,呵呵,这已经足够了。
Response.Cookies("secret") = x
%>
<%
<! - - - - - - - - - - - - - - - download.asp - - - - - - - - - - - - - - - - - >
Response.Buffer = true
If Request.cookies("secret") = "" Then Response.End
If Not IsNumeric(request.cookies("secret")) Then Response.End
'这里对传递过来的值没有多加判断,只是为了节省篇幅
secret = CLng(Request.Cookies("secret"))
id = CLng(Request.QueryString("id"))
If id / secret = 1 Then
    Response.AddHeader "content-type", "application/x-msdownload"
    Response.AddHeader "Content-Disposition", "attachment;filename=ttt.exe"
    Server.Transfer "ttt.exe"
Else
    Response.Write "Error!"
End If
%>

====================================================
第二方法
打开文件 SoftDown.Asp 在:
if request.QueryString(“ID”)=”” then
response.write “不能连接或者没有指定下载软件”
response.end
end if
的上面或者是下面加上下列代码

<%
dim strReferer,domain,splDomain,isHttp
isHttp=false
'本站下载cn-media.com/i-v/index.shtm>系统网址列表,不要带上http:// ;
domain="sron.net,61.156.14.223,61.156.14.227"
splDomain=split(domain,",")
strReferer=Request.ServerVariables("HTTP_REFERER")
for iii = 0 to ubound(splDomain)
	if instr(strReferer,trim(splDomain(iii)))>0 then isHttp=True
next
if isnull(strReferer) or isHttp=false then
Response.Write "下载链接来自其他网站,这是不允许的,<a>请进入本站页面后再进行下载。</a>"
CloseDatabase
response.end
end if
%>

本站下载cn-media.com/i-v/index.shtm>系统网址列表 就是访问你下载频道网址里的域名,比如你的下载频道可以用多个网址来访问,所以这里用逗号隔开.
当然这里的防盗链只是相对的,只要知道了软件存放地址,防盗链就不管用了.
===========================================================
第三方法
用Asp实现防盗链技术(带自动返回功能)
源文件代码:

<%
From_url = CStr(Request.ServerVariables("HTTP_REFERER"))
Serv_url = CStr(Request.ServerVariables("SERVER_NAME"))
If Mid(From_url, 8, Len(Serv_url)) <> Serv_url Then
    response.Write "<strong>非法链接!<span id="yu">3</span>秒钟后cn-media.com/i-v/index.shtm>系统将自动返回首页......</strong>"
    response.Write ""
    response.Write "<script type="text / javascript">valignbottom();</script>"
    response.Write "<script type="text / javascript">function countDown(secs){yu.innerText=secs;if(--secs>0)setTimeout("countDown("+secs+")",1000);}countDown(3);</script>"
    response.End
End If

Function GetFileName(longname)'/folder1/folder2/file.asp=>file.asp
    While InStr(longname, "/")
        longname = Right(longname, Len(longname) -1)
    Wend
    GetFileName = longname
End Function

Dim Stream
Dim Contents
Dim FileName
Dim TrueFileName
Dim FileExt
Const adTypeBinary = 1
FileName = Request.QueryString("FileName")
If FileName = "" Then
    Response.Write "无效文件名!"
    Response.End
End If
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
    Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
        Response.Write "非法操作!"
        Response.End
End Select
Response.Clear
Response.AddHeader "content-disposition", "attachment; filename=" & GetFileName(Request.QueryString("FileName"))
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
If LCase(Right(FileName, 3)) = "rar" Then '设置文件类型
    TrueFileName = "/files/"&FileName '设置文件目录的相对路径
End If
Stream.LoadFromFile Server.MapPath(TrueFileName)
While Not Stream.EOS
    Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>
分类: ASP

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部