这里首先要提一下,IIS是怎么怎么处理http请求的

当服务器接收到一个 Http请求的时候,IIS 首先需要决定如何去处理这个请求(服务器处理一个.htm页面和一个.aspx页面肯定是不一样)。那IIS依据什么去处理呢?―― 根据文件的后缀名。

服务器获取所请求的页面(也可以是文件,比如 jimmy.jpg)的后缀名以后,接下来会在服务器端寻找可以处理这类后缀名的应用程序,如果IIS找不到可以处理此类文件的应用程序(比如.aspx就是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll这个控制,就是.net运行时),并且这个文件也没有受到服务器端的保护(一个受保护的例子就是 App_Code中的文件,或者webconfig,一个不受保护的例子就是你的js脚本,你的图片资源文件夹),那么IIS将直接把这个文件返还给客户端。

这里,我们看到了为什么我们无法防止盗链或者资源恶意下载,因为默认这些资源不在.net程序控制之下,当客户端请求这些资源是,服务器IIS会把这些资源直接返回给客户端。

接下来的核心目的,就是怎么能让这些资源在程序控制范围之内呢?

有两种方案

一。

1.扩展IIS配置,加入扩展名.jpg,gif等受C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll这个控制。

2.在程序里扩展httpmodule或者httphander或者Global,(如果在httphander里处理,还需要在webconfig的hander节点中定义处理.jpg,gif等httpmodule是应用程序级的,httphander是每个http请求级的)

一般为判断主机头,然后如果不是你的主机头,那么为盗链,

具体怎么做,自己定了(如返回给盗链信息,水印等)

二。如果不想控制web服务器,那么显示图片的时候就不能轻易的直接输出资源地址了,需要把图片和资源先用数据流加载,再返回到客户端,这样因为输出的时候是程序控制的,所以也是可控制的(可以用aspx或者ashx文件做成文件路径输出图片)

1.图片或资源存在数据库,以流的形式输出,

2.和上面一样,只是存在文件夹里,输出的时候加载成流,输出

3.如果下载的时候不转成流,下载的话也可以先加一个button按钮 提交服务器,隐藏或者动态生成资源链接,但是图片不能这么做.因为图片是默认显示的

然后再说一下图片防下载的解决方案

防止图片下载,

1.水印签名(也可以做为防盗链)

2.js或者flash客户端什么的屏蔽

3.把图片切成N块,(比如1000块,动态生成1000个Image拼一起,拆张和他干,我就这么做:),强烈推荐)

注:如果用切图就没办法了,毕竟是客户端,不过防盗链,防下载并不是为了个人用户开发的,是防止一些网络小偷程序等恶意软件的。

文件下载也是一样,文件存在数据库或者文件夹里,把文件夹的权限设为不可访问,然后用文件流输出

string sFileName = Server.MapPath("1.rar");
        FileStream fileStream = new FileStream(sFileName, FileMode.Open);
        long fileSize = fileStream.Length;
        byte[] fileBuffer = new byte[fileSize];
        fileStream.Read(fileBuffer, 0, (int)fileSize);
        //如果不写fileStream.Close()语句,用户在下载过程中选择取消,将不能再次下载
        fileStream.Close();

Context.Response.ContentType = "application/octet-stream";
        Context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("1.rar"//隐藏路径, Encoding.UTF8));
        Context.Response.AddHeader("Content-Length", fileSize.ToString());

Context.Response.BinaryWrite(fileBuffer);
        Context.Response.End();
        Context.Response.Close();

转载于:https://www.cnblogs.com/cuihongyu3503319/archive/2008/12/11/1352830.html

防止图片盗链和资源恶意下载相关推荐

  1. php如何打开图片的权限,php如何控制用户对图片的访问 PHP禁止图片盗链 php技巧...

    把images目录设置成不充许http访问(把图片目录的:读取.目录浏览 两个权限去掉). 用一个PHP文件,直接用file函数读取这个图片.在这个PHP文件里进行权限控制. apache环境中,在你 ...

  2. php如何控制用户对图片的访问 PHP禁止图片盗链

    本文摘自网络仅供学习只用 本人根据教程总结了一下https://www.imooc.com/video/13412 主要是利用apache的htacess进行控制,,拿什么判断是不是通过本站点访问的呢 ...

  3. 服务器文件如何防止盗链,怎么在Apache服务器中实现一个防止图片盗链功能

    怎么在Apache服务器中实现一个防止图片盗链功能 发布时间:2020-12-15 16:06:51 来源:亿速云 阅读:104 作者:Leah 这篇文章将为大家详细讲解有关怎么在Apache服务器中 ...

  4. ASP.NET_阻止图片盗链

    什么是图片盗链   一般的浏览现象,其中最重要的一点就是一个完整的页面并不是一次全部传送到客户端的.如果你请求的是一个带有许多图片和其他信息的页面,那么最先的一个HTTP请求被传送回来的是这个页面的文 ...

  5. HttpHandler应用之 防止图片盗链

    httpHandler 是特别类的一种,可以处理对特定类型文件的请求.实际上甚至可以通过创建自己的处理器来处理对.aspx 页面的请求,将整个页面的处理系统换掉.下面我们就用HttpHandler 来 ...

  6. 利用Cookie Stuffing让图片盗链者为我们赚钱

    最近没神马好的思路来更新wordpress教程,索性水一贴其他教程~,看到首先魔客吧来解释下什么是cookie stuffing. cookies是通过html中header(头部信息)传递的,除非浏 ...

  7. IIS下利用ISAPI_Rewrite防图片盗链

    图片被盗链对站长来说是个不幸的事情,特别被大流量网站盗链之后,给服务器带来不必要的负担,严重的甚至影响到网站的正常运行.对于商业模式的网站,损害自不必多言. 图片防盗链现在已经有一些解决办法了.基本上 ...

  8. Asp.Net Core 通过中间件防止图片盗链

    一.原理 要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或 ...

  9. java 微信图片盗链破解_隐藏图片地址,伪造来路Referer实现绕过微信图片的防盗链机制...

    最近用软件采集微信公众号文章图片下载不了,全是显示盗链图片.没有办法只好上网查询有没有办法解决.在一个朋友那看到了2种解决方案记录下: 微信防盗链 用php写一个绕过的代码,你只需要把php上传到你的 ...

最新文章

  1. 通过loganalyzer展示数据库中的日志
  2. 安装Linux时,引导分区位于一个GPT分区方案的错误提示
  3. hdu 6127---Hard challenge(思维)
  4. c语言6字符宽度和小数位数,2017年计算机二级C语言考点复习
  5. Eigen入门之密集矩阵 10 - 矩阵的行优先及列优先存储
  6. 面试官问你MySQL的优化,看这篇文章就够了
  7. Elasticsearch -- Java High Level REST Client (RestHighLevelClient) 使用说明文档
  8. 0x00000000指令引用的内存不能为written_JVM03——对象实例化,内存布局,访问定位...
  9. 为什么更改总和顺序会返回不同的结果?
  10. 20200621每日一句
  11. Unity3D 汉化
  12. Oracle数据库的下载地址
  13. 淘宝/天猫商品优惠券查询API接口,优惠券API接口
  14. 修改系统UISearchBar搜索框的样式-搜索图片、背景颜色
  15. C语言----整钱换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同的兑换方法?(同理n元硬币的兑换方法呢?n元由用户输入)
  16. 脱壳之aspack压缩壳
  17. Elasticsearch 原理,安装,生产配置以及常见CRUD,ILM管理,常见API解析,go-elasticsearch-client使用
  18. SQL学习-向一张表中插入数据来源于另一张表
  19. contiki仿真模拟器cooja的使用
  20. python画图配色_python语言,文章绘图配色高级又简单!

热门文章

  1. html元素垂直水平居中显示,关于css:html-元素垂直水平居中
  2. CRNN+CTCLoss中文手写汉字识别
  3. 地图上分成一块一块区域 高德地图_开车用哪个导航最好?看看老司机总结的地图对比,学会不吃亏...
  4. python 画蝴蝶_python画蝴蝶曲线图的实例
  5. python中label怎么绑定变量_Kivy将标签文本绑定到变量(仅限Python)
  6. c语言 0x12ed,C语言基本数据类型及运算题库有答案.doc
  7. 新道电子沙盘系统_电子沙盘系统在房地产开发与销售过程中的优势
  8. 给GridView编辑列按钮添加客户端提示信息
  9. 黄聪:一个拼图工具的制作思路
  10. RHCS的整理归纳与实践