关于图片盗链这个问题,毕竟是自己的劳动成功,很多人不希望别人就那么轻易地偷走了。 这个功能在很多的论坛上都具有,可能是因为盗链的行为太多了吧
反盗链的程序其实很简单,熟悉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}
凡是有利必有害,这样做最大的缺点就是增加了系统开销,客户端的每一请求都要过滤一遍,性能自然要打折扣了。不知道哪位朋友有更好的办法,或者优化的方法,一起来探讨探讨。
<script src="/imges/showgg2.js" language="javascript" type="text/javascript"></script>
<script type="text/javascript"></script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script>
分享到:
相关推荐
相信很多人,不管是私人也好,seo也好,站长也好,还是小推手也好,都会不时越到“防盗链图片”这个问题,有时候需要把整个网页文章拷贝进去,但是复制过去的图片,到自己的网站这边,刷新一下就没了~~~给自己活着给...
无视图片防盗链php单文件
iis 防盗链 音乐网站防盗链 图片防盗链
网站防盗链: IIS7.5配置防盗链 IIS7.0配置防盗链
为了实现图片防盗链,根据网络上搜集的资料加上自己的实践,终于实现了iis下的图片防盗链功能。 实施步骤: 1.下载比较出名的www.helicontech.com提供的ISAPI Rewrite软件的免费版本(免费版本虽然有一些功能上...
关于图片盗链这个问题,毕竟是自己的劳动成功,很多人不希望别人就那么轻易地偷走了。 这个功能在很多的论坛上都具有,可能是因为盗链的行为太多了吧 反盗链的程序其实很简单,熟悉ASP.NET 应用程序生命周期的话很...
c# .net mvc的IHttpHandler奇妙之旅--图片文件请求安全过滤,图片防盗链 文章教程地址:https://blog.csdn.net/cplvfx/article/details/132237802
使用方法:将文件保存成i.asp上传到根目录 将不能外链的图片地址改成http://你的域名/showpic.asp?url=图片地址 //www.lenovopc.com.cn提供 演示:http://shop.lenovopc.com.cn/article-61.html
IIS不支持UrlRewrite。 所以我们需要通过安装第三方服务器扩展让IIS支持UrlRewrite。 目前有一种产品能比较好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。
本文实例讲述了php实现图片文件与下载文件防盗链的方法。分享给大家供大家参考。具体分析如下: 在php中最简单的防盗链办法就是利用php的$_SERVER[‘HTTP_REFERER’]函数来操作了,但是此方法不可靠,我们最终还是...
把 Rewrite 下的四个文件(httpd.ini 、httpd.parse.errors、mtbnotif.dll、Rewrite.dll)上传到这里。 二、设置IIS属性,选择网站属性,到ISAPI筛选器, 关闭属性对话框。 再次查看网站属性,到ISAPI筛选器 如果...
超强文件防盗功能:保护指定扩展名文件、保护指定整个目录下文件、也可以设置相应目录白名单、友情站点。 超强流媒体防盗功能:flash/图片/多媒体文件,您都可以安心地将这些文件放置在您的网站上,而不必担心被...
有些粗心大意的人转贴时,简单地把图片复制了过来。可如果该网站的图片设置为防止外部链接,我们遇到转载的好帖,又找不到原出处,难道只有哀叹的份么?
防盗链就是禁止其他网站引用自己网站资源而做的一系列设置,优点就不需要说了,绝多数就是防止资源浪费,特别是有宽带、流量限制的空间如果不做一些 限制可能就光引用自己网站图片、视频等等资源可能会消耗很大一...
本资源包含 防盗链 、字符编码过滤、日志、异常处理、权限管理、字符过滤、图片水印、Cache缓存等 可直接使用 使用方法请看配置文件
网上有许多设置图片防盗链方法,这里提供两种,一是利用.htaccess文件进行一些简单的设置便能够轻易防止别人盗取自己网站原创图片的链接;二是使用插件WP Hotlink Protection。 一.修改.htaccess文件 怎么实现?首先...
要求asp.net环境,并要在IIS里设置网站属性,可以用来限制图片等文件的盗链,通过referrer判断,如果没有引用页返回真实文件,如果引用页的域名不是本网站域名则返回wbtbForbidden.jpg这个图片,文件不存在返回...