| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7925 人关注过本帖
标题:[原创]ISAPI Filter网站资源防下载系统-AntiDownload.DLL
取消只看楼主 加入收藏
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
收藏
 问题点数:0 回复次数:13 
[原创]ISAPI Filter网站资源防下载系统-AntiDownload.DLL

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: redice E-mail:redice@see.xidian.edu.cn QQ:181697466
*/ 时间: 2007-10-19 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------

最近由于项目需要,学习了一下ISAPI Filter编程,写出了这个系统。现向编程论坛的朋友们开源。


RedIce网站资源防下载系统使用说明

该网站资源防下载系统可以保护网站中所有的mdb,asa文件,防止被
下载。并且,可以保护特定目录中的特定类型文件,防止它们被非法
下载。

使用方法:
1 将配置文件FileProtector.ini文件复制到C盘根目录。
2 在IIS中增加"ISAPI筛选器"
管理->Internet 信息服务->网站->属性->ISAPI筛选器标签
点击“添加”,输入筛选器名称(例如:AntiDownload)。选
择DLL文件的路径。
3 修改FileProtector.ini文件中的目录相对路径为你要保护的目
录的相对路径。

这样就OK了!

注意:1 AntiDownload.dll文件不需要使用Regsvr32命令进行注册。
2 FileProtector.ini文件中仅第一行的数据有效,只能写
一个路径。

发布程序

w2F0sqJE.rar (11.96 KB) [原创]ISAPI Filter网站资源防下载系统-AntiDownload.DLL




aPoeCOOz.rar (5.11 KB) [原创]ISAPI Filter网站资源防下载系统-AntiDownload.DLL

搜索更多相关主题的帖子: Filter AntiDownload ISAPI DLL 资源 
2007-10-19 21:35
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
嘿嘿
看来关心的人 不多呀

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 10:11
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(永夜的极光)顶一下,虽然还看不懂,先下载来...
对呀 这样你是不能通过类似http://127.0.0.1/upload/ceshi.doc这样的路径下载到文件了

因此在我们的系统中,我们需要想办法让注册用户能正常下载
办法就是:采用Stream读取文件并发送给客户,缺点:占CPU


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 11:02
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(永夜的极光)楼主能不能把你参考的资料共享一...
DWORD CAntiDownloadFilter::OnUrlMap(CHttpFilterContext* pCtxt,
PHTTP_FILTER_URL_MAP pMapInfo)
{
// TODO: React to this notification accordingly and
//读取配置文件
char path[256];
ifstream ifs("C:\\fileprotector.ini");
memset(path,0,256);
ifs.getline(path,256);
ifs.close();
char url[256];
memset(url,0,256);
strcpy(url,pMapInfo->pszURL);
if(strstr(strlwr(url),".mdb")||strstr(strlwr(url),".asa")){
DWORD StrLength;
CHAR Str[256];
sprintf(Str,"<p align=center><font color=red>注意:你没有访问该资源的权限!</font>");
StrLength=strlen(Str);
pCtxt->WriteClient(Str,&StrLength);
return SF_STATUS_REQ_FINISHED;
}
if(strstr(strlwr(url),strlwr(path))&&(strstr(strlwr(url),".pdf")||strstr(strlwr(url),".doc"))){
DWORD StrLength;
CHAR Str[256];
sprintf(Str,"<p align=center><font color=red>注意:你没有访问该资源的权限,请先登陆!</font>");
StrLength=strlen(Str);
pCtxt->WriteClient(Str,&StrLength);
return SF_STATUS_REQ_FINISHED;
}

// return the appropriate status code
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
这是核心代码,看看这些就行了 其它的都是VC++ Isapi向导生成的

[此贴子已经被作者于2007-10-20 11:04:01编辑过]


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 11:03
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(永夜的极光)哦,你继承了CHttpFilter,然后重...

ISAPI Filter劫持了客户与服务器的会话。不管用浏览器还是下载工具,都要使用HTTP协议与服务器进行报文交互。

除非你拿着硬盘到服务器上拷贝,否则你是没有办法下载到那些受保护的文件的。


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 19:55
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(永夜的极光)那用FTP呢?
你不把该文件放在FTP目录下,谁能用FTP下载下来


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 21:56
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(永夜的极光)回复:(redice)回复:(永夜的...
但是象一个论文管理系统,我们只希望注册用户拥有下载权限。我们又总不能给每个注册用户分配一个FTP帐号吧。再说,ftp不如 web人性话。 只有牺牲CPU了

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 22:55
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 

那到不至于
要具体看服务器的配置了
不过 别担心,没有那么严重。现在很多网站 ASP防下载就是这样做的。这样不会泄漏文件的真实路径,在一定程度上也你能实现防非法下载

下面是我写的一个系统的ASP防下载文件。现在系统在服务器上运行很好:

<!--#include file="../include/antihack.inc.asp"-->
<!--#include file="conn.inc.asp"-->
<%
'************学术论文管理系统******************
'本页说明:文件下载
'**************************************************
%>
<%
'访问身份限制
if session("number") = "" then
Response.Redirect "DownError.htm"
end if
Dim sql
Dim rs
Dim filepath
sql="select * from theses where id=" & request("id")
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
if rs.eof then
rs.close
set rs=nothing
closeconn
%>
<Script language=vbscript>
msgbox "该记录不存在",0,"注意"
history.back
</script>
<%
else
'如果该论文不是下载者本人的,则不允许下载
if rs("number")<>session("number") then
rs.Close
set rs=nothing
closeconn
Response.write "<br><font color=red>注意:你没有权限下载该文件!</font>&nbsp;&nbsp;<a href=vbscript:history.back>返回</a>"
Response.End
end if
filepath=server.MapPath("../Submit/theses/"&rs("url"))
rs.close
set rs=nothing
closeconn
downloadfile filepath
end if
Function downloadfile(fullpath)
downloadfile = False
Dim strfilename, s, fso, f, intfilelength
Dim randfile
randfile=year(now())&month(now())&hour(now())&minute(now)&second(now)& "." &right(fullpath,3)
Set fso = server.createobject("scripting.filesystemobject")
If not fso.fileexists(fullpath) Then
Response.write "<br><font color=red>注意:你所请求的文件不存在!</font>"
Exit Function
End If

Set f = fso.getfile(fullpath)
'获取文件大小
intfilelength = f.size

Set s = server.createobject("adodb.stream")
s.open
s.type = 1
s.loadfromfile(fullpath)

response.buffer = True
response.clear
response.addheader "content-type","application/x-msdownload"
response.addheader "Content-Encoding","GB2312"
'随即的文件名称
response.addheader "content-disposition","attachment;filename=" & randfile
response.addheader "content-length" ,intfilelength
response.contenttype = "application/octet-stream"
While not s.eos
response.binarywrite s.read(1024 * 64)
' 关键的一句
response.flush
wend
s.close
Set s = Nothing

downloadfile = True
End Function
%>


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 23:17
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(hmhz)耗损系统资源的东西最好别搞,开玩笑,...
没那么严重 看来是我描述有问题了

说它耗CPU是拿它与传统的直接由WEB服务器将文件发送给客户(eg.http://127.0.0.1/upload/cs.doc)这种方式做比较的

[此贴子已经被作者于2007-10-20 23:20:37编辑过]


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 23:20
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(multiple1902)AntiDownload....这名字值得商...
My english is poor !我也不知道该给它起什么名字合适?? 老兄,你觉得叫什么合适呢?

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-20 23:21
  • 14
  • 1/2页
  • 1
  • 2
快速回复:[原创]ISAPI Filter网站资源防下载系统-AntiDownload.DLL
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073812 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved