ASP.NET图片防盗链的方法


Posted on December 27, 2008


考试了,应该复习了,书看不进去哇~~~

空闲的时候想想自己的感兴趣的事情,想啊想就看到将要开始的一个项目,想到关于图片防盗的问题,这个东东,我觉得不是很难,大多数的网站都已经实现了,估计是在httpHandlers中实现的。

GOOGLE了一下,果然,代码很简单,原理我就不讲了,网上很多

在web.config的<system.web>配置节中加下如下代码

<httpHandlers>
      <add verb="*" path="*.jpg" type="ASPX2.jpg2, ASPX2"/>
</httpHandlers>

实现jpg2类,这个类实现了IHttpHandler接口,方法体中要实现两个方法ProcessRequestIsReusable

   public void ProcessRequest(HttpContext context)
        {
            if (context.Request.UrlReferrer.Host.ToString().IndexOf("local") != -1)
            {
                FileInfo file = new System.IO.FileInfo(context.Request.PhysicalPath);
                context.Response.Clear();
                context.Response.AddHeader("Content-Disposition", "filename=" + file.Name);
                context.Response.AddHeader("Content-Length", file.Length.ToString());
                string fileExtension = file.Extension.ToLower();
                switch (fileExtension)
                {
                    case "jpg":
                    context.Response.ContentType = "image/jpeg";
                    break;
                    //这里只列出去JPG文件,其实文件类型可以GOOGLE一下
                }
                context.Response.WriteFile(file.FullName);
                context.Response.End();
            }
            else
            {
                //这里是盗链时的处理方法,可以一张盗链提示的图
            }
        }

这样基本上就OK了,测试页使用的是http://127.0.0.1,页面打开显示盗链的信息,用http://localhost打开的时候,就正常了。


其实写到这里,问题也就结束了,但还有一个问题,这种方法处理的效率如何呢?有待进一步研究哈~~~

2009-1-22补充一下:VS自带的WEB服务器会把所有的请求映射到ASP.NET FRAMEWORK来处理。在IIS中,需要配置图片文件扩展名映射到ASP.NET FRAMEWORK上,这个问题原来没发现。。


标签:.NETasp.net

其它推荐日志:

什么是系统分析师?

Discuz(php)的加密算法

【转】char、varchar、nchar、nvarchar的区别

用c#读文件

在javascript中设置body的onload事件

asp.net2.0导出pdf文件完美解决方案

虚拟主机限制方式优缺点分析

如何在asp.net中用c#在获得当前系统登陆的帐户的Identity

网络中的8根细线

今天发现了一个mshta.exe进程,没见过。。

.net中的FileUpload控件,突破上传的4m限制

vs2005调试端口怎样样修改的方法

学习.Net经典网站推荐

.NET开发者在Vista下应该考虑的五个安全问题(转)

PHP计算字符串长度(中文问题)

Word中的字体大小(几号-几磅)

逗号表达式

UML--时序图

IE和Firefox的js兼容性整理

ASP.NET读取Web.config中的自定义数据

C#编码标准--编码习惯(转)

什么是僵尸文件?

Silverlight开发工作开始环境

vs2008【断点无效】解决方法

scroll lock

升级sp3后出现"一个问题阻止windows正确检测此机器许可证"

自动生成圆角,无图片版

BAT脚本获取批处理文件所在路径

如何动态生成服务器控件!

javascript 判断是否为数字

搞定CSS SPAN和DIV的区别

动态创建GridView的列 ( 转载 )

访问IIS元数据库失败

c#中结构数组定义

IIS装framework 2.0

关于"Could not load file or assembly ''Microsoft.Office.Interop.Word''..."问题的解决方法

Mysql中文乱码

不要给网页文件起中文名称!

asp.net2.0中gridview里嵌套dropdownlist

软件版本号命名规则详解


Name: 共享登陆站
看不懂,学习。。。^_^
Min
哪不懂?交流一下。。。
Name: w
d我的啊大大大 大大大大啊大大大 
Min
Search
最新评论
推荐日志
微信扫一扫