这里首先要提一下,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. 【建模必备】遗传算法的基本原理与步骤(适应度函数与适应度分配)
  2. 基于深度学习的脑电图识别 综述篇(二)数据采样及处理
  3. Python中文件的介绍以及操作
  4. java编程题库下载_Java习题
  5. 化工原理 蒸馏(上)
  6. [文摘20071224]七条不可不知的生存法则
  7. es6 for...of 循环
  8. 初学Laravel框架与ThinkPHP框架的不同
  9. MSN Messenger协议简介
  10. 【微信小程序 | 实战开发】开发环境、测试环境和生产环境
  11. python爬取豆瓣top250电影名称_Python--爬取豆瓣TOP250电影信息
  12. 2018年阅读随笔记录(持续更新)
  13. python自动上传图片_Python+selenium自动上传博客图片至新浪微博相册
  14. hustoj安装16种判题语言
  15. JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)
  16. 2020年 - 年终总结
  17. docker出现问题:The container name “/XXX“ is already in use by container 解决方案
  18. 修改html文件500错误信息,打开网页提示 HTTP500错误的终极解决方法
  19. 知识是不会让人自满的。 少年,只有名和利才会。
  20. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引)

热门文章

  1. linux boot 缺省状态,Bootload启动过程全描述(uclinux)【转载】
  2. java 不规则图形_java 根据点画不规则封闭图形
  3. js webpack 配置路径_Vue.js学习No.5(WebPack配置二)
  4. 华为nova7保密柜_华为nova8系列发布 Vlog视频旗舰3299元起
  5. xp系统开机必须启动的服务器,XP系统如何关闭开机启动项呢?
  6. sncr脱硝技术流程图_SNCR烟气脱硝技术工艺流程示意图
  7. 多目标进化优化_科研一角|论文分享 | 等离子喷焊工艺参数多目标优化
  8. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现
  9. Linux内核协议栈分析之网卡初始化——tcp/ip通信并不神秘(1)
  10. php 组,PHP: 子组(子模式) - Manual