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-----------------> <!---------------download.asp----------------->
本站下载cn-media.com/i-v/index.shtm>系统网址列表,不要带上http:// spldomain=split(domain,",") 本站下载cn-media.com/i-v/index.shtm>系统网址列表 就是访问你下载频道网址里的域名,比如你的下载频道可以用多个网址来访问,所以这里用逗号隔开. 当然这里的防盗链只是相对的,只要知道了软件存放地址,防盗链就不管用了. 第三方法 用asp实现防盗链技术(带自动返回功能) 源文件代码: 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 %> 该文章在 2010/6/27 17:29:39 编辑过 |
关键字查询
相关文章
正在查询... |