All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#应用:读取指定盘符的硬盘序列号_[Asp.Net教程]
apache中httpd.conf的中文件详解_[PHP教程]
php+ajax开发的注意事项_[PHP教程]
ASP.NET,1.1,无,Cookie,SessionID,重写_.net资料_编程技术
开发一个适合Ajax+JSON+jQuery环境使用的多功能页码栏——jPagerBar-1.1.1_[AJAX教程]
GridView实用示例源码(可以导出Excel)_[Asp.Net教程]
优化php程序必须注意的39个技巧_[PHP教程]
获取Web.Config文件中AppSetting_[Asp.Net教程]
测试,Apache,Web,和,PHP,应用程序服务器_php资料_编程技术
千万数量级分页存储过程_[SQL Server教程]
Reading number is top 10 pictures
奇趣的世界记录3
Magnificent cloud2
为什么别人说你是疯子
这才是真正的人体艺术1
Discharge accidentally Actresses by the breast4
Sora aoi in China1
Take you to walk into the most true north Korea rural3
Kim jong il's mistress, national beauty JinYuJi actor2
Absolutely shocked. National geographic 50 animal photographys8
鸡蛋的新玩法
Download software ranking
SP4 for SQL2000
C#编程思想
Ashlynn Video4
网络管理员第三版
Unix video tutorial2
Tram sex maniac 2 (H) rar bag17
终极变速大师Speeder3.26
实战黑客不求人
Unix video tutorial20
jdk1.5
aaa published in(发表于) 2013/12/13 9:42:34 Edit(编辑)
图片、文件防盗链程序_.net资料_编程技术

图片、文件防盗链程序_.net资料_编程技术

图片、文件防盗链程序_.net资料_编程技术-你的首页-uuhomepage.com







关于图片盗链这个问题,毕竟是自己的劳动成功,很多人不希望别人就那么轻易地偷走了。 这个功能在很多的论坛上都具有,可能是因为盗链的行为太多了吧
反盗链的程序其实很简单,熟悉ASP.NET 应用程序生命周期的话很容易就可以写一个,运用HttpModule在BeginRequest事件中拦截请求就ok了,剩下的工作就是过滤,再过滤!
如果不熟悉HttpModule的话,可以去MSDN上查阅,介绍非常详细,地址:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/f1d2910f-61d0-4541-8af8-c3c108ca351f.htm。这里就不废话了




1private void Application_BeginRequest(Object source, EventArgs e)
2{
3 HttpApplication application = (HttpApplication)source;
4 HttpContext context = application.Context;
5 bool isSafe = true; //是否合法链接
6 string uri = context.Request.Url.AbsolutePath.ToLower();
7 if (uri.LastIndexOf(".") > 0 && context.Request.UrlReferrer != null)
8 {
9 string exp = uri.Substring(uri.LastIndexOf("."));
10 //这里是判断文件后缀名是否在排除的文件类型列表之内
11 bool isHas = ClassLibrary.RData.RString.StrIsIncUseSC(exp, config.ImgSafeType.Split('|'));
12 if (isHas)
13 {
14 string domainOutter = context.Request.UrlReferrer.Authority.ToLower(); //包含域名和端口
15 ArrayList arry = Common.Cache.GetDomainValid();//取系统定义的合法的域名绑定列表
16 isSafe = arry.Contains(domainOutter); //判断当前请求的域名是否在合法列表之内
17 }
18 }
19 //下面就是不合法的时候的输出了,如果有默认替代图片则输出,如果没有就生成一个,格式为.gif
20 if (!isSafe)
21 {
22 Bitmap img = null;
23 Graphics g = null;
24 MemoryStream ms = null;
25
26 try
27 {
28 string picPath = ClassLibrary.RPath.GetFullDirectory("images/unlawful.gif");
29 if (File.Exists(picPath))
30 {
31 img = new Bitmap(picPath, false);
32 }
33 else
34 {
35 img = new Bitmap(64, 64);
36 g = Graphics.FromImage(img);
37 g.Clear(Color.White);
38 Font f = new Font("宋体,黑体,Arial", 9,FontStyle.Bold);
39 SolidBrush s = new SolidBrush(Color.Red);
40 g.DrawString(Resources.Message.LawlessLink, f, s, 1, 20);
41 img.Save(picPath, ImageFormat.Gif);
42 }
43 ms = new MemoryStream();
44 img.Save(ms, ImageFormat.Gif);
45 context.Response.ClearContent();
46 context.Response.ContentType = "image/Gif";
47 context.Response.BinaryWrite(ms.ToArray());
48 context.Response.End();
49 }
50 catch
51 { }
52 finally
53 {
54 if(g != null )
55 g.Dispose();
56 img.Dispose();
57 }
58 }
59}
凡是有利必有害,这样做最大的缺点就是增加了系统开销,客户端的每一请求都要过滤一遍,性能自然要打折扣了。不知道哪位朋友有更好的办法,或者优化的方法,一起来探讨探讨。











关键词:
推荐给好友】【关闭

















最新五条评论



查看全部评论



评论总数 0




































您的评论
















用户名:


新注册


密 码:





匿名:




































·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任



·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据



·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为



































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.