金狐

狐狸

管理员

贴子 138985

精华 13

积分 77006

信用 11

竞猜 20

魅力 23333

威望 8

现金 91187760 CZB

银行 7484412 CZB

黄金 8888

比特币 888

注册时间 2003-08-18

发表于:2012-04-01 14:04:56   |  显示全部帖子   |  本帖随机奖励楼主:2 CZB   |  转账至  金狐
iis防盗链?没具体做过,但书和网上很多相关的例子。
也可以直接写程序,检查来路,或者使用cookie,seesion等检查方式防盗链。
时间、时间、时间
楼主
编辑   |    引用    回帖
打开    高亮    置顶   |    移动    回收站   |    -6删主题    删主题    |   
金狐

狐狸

管理员

贴子 138985

精华 13

积分 77006

信用 11

竞猜 20

魅力 23333

威望 8

现金 91187760 CZB

银行 7484412 CZB

黄金 8888

比特币 888

注册时间 2003-08-18

发表于:2012-04-01 15:04:40   |  显示全部帖子   |  转账至  金狐
按具体例子来做啊
时间、时间、时间
沙发
编辑   |    引用    回帖
打开    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
金狐

狐狸

管理员

贴子 138985

精华 13

积分 77006

信用 11

竞猜 20

魅力 23333

威望 8

现金 91187760 CZB

银行 7484412 CZB

黄金 8888

比特币 888

注册时间 2003-08-18

发表于:2012-04-01 15:04:43   |  显示全部帖子   |  转账至  金狐
引用:
原帖由 东方绿洲 于 2012-4-1 15:03 发表
我的本意是想,,,

我的资源只限我的用户下载
使用直接输入地址下载不了
直接输入地址下载不了,这个不叫防盗链啊。

要是你需要实现直接输入地址,下载不了。那你可以用程序输出数据流,这个程序事先判断cookie或session(session这个不推荐,耗服务器资源),要是cookie/session没有相应的值,则不输出数据流即可。当然,cookie/session这个值,在网页输出的时候设置,也就是人家不访问你的网页,则没有相应的值,也就下载不了了。没有,则输出一个提示页面即可。


例如页面A.aspx,下载链接是B.aspx
A.aspx设置一个特定的比较复杂的cookie,有效期是10分钟。
B.aspx先判断有没有这个预设的cookie,有,则读取本地的资源(软件,图片。。),然后设置文件头,直接输出这个数据流。没有,则输出一个提示页面即可。
时间、时间、时间
板凳
编辑   |    引用    回帖
打开    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
金狐

狐狸

管理员

贴子 138985

精华 13

积分 77006

信用 11

竞猜 20

魅力 23333

威望 8

现金 91187760 CZB

银行 7484412 CZB

黄金 8888

比特币 888

注册时间 2003-08-18

发表于:2012-04-01 19:04:43   |  显示全部帖子   |  转账至  金狐
1.不是判断后直接跳转那个rar下载文件。看清楚我说的原理
2.最主要的是,用程序读取本地文件,然后程序输出数据流,用户下载的不是rar文件,是程序输出的数据流,明白了没?

aspx程序输出文件的例子

FileInfo file = new System.IO.FileInfo(@"G:\WebCenter\TestWebSolution\WebApplication1\test.rar");
// FileInfo 类在 System.IO 命名空间里
Response.Clear();
Response.AddHeader("Content-Disposition", "filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
string fileExtension = file.Extension;
// 根据文件后缀指定文件的Mime类型
switch (fileExtension)
{
     case ".mp3":
         Response.ContentType = "audio/mpeg3";
         break;
     case "mpeg":
         Response.ContentType = "video/mpeg";
         break;
     case "jpg":
         Response.ContentType = "image/jpeg";
         break;
     case "rar" :
          Response.ContentType = "application/x-rar-compressed";
         break;
  /*   case "........等等":
         Response.ContentType = "....";
*/

         break;
     default:
         Response.ContentType = "application/octet-stream";
         break;  
}
Response.WriteFile(file.FullName);
Response.End();
时间、时间、时间
4楼
编辑   |    引用    回帖
打开    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |   
金狐

狐狸

管理员

贴子 138985

精华 13

积分 77006

信用 11

竞猜 20

魅力 23333

威望 8

现金 91187760 CZB

银行 7484412 CZB

黄金 8888

比特币 888

注册时间 2003-08-18

发表于:2012-04-01 19:04:29   |  显示全部帖子   |  转账至  金狐
要是直接跳转文件的,用户一样可以找你的文件下载路径,这样就没意义了。
时间、时间、时间
5楼
编辑   |    引用    回帖
打开    高亮    置顶   |    移动    回收站   |    -6删帖    删帖    |