最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net中利用ashx實(shí)現(xiàn)圖片防盜鏈代碼

 更新時(shí)間:2008年11月23日 14:32:04   作者:  
直接分析盜鏈原理:看下面用httpwatch截獲的http發(fā)送的數(shù)據(jù)
GET /Img.ashx?img=svn_work.gif HTTP/1.1
Accept: */*
Referer: http://www.svnhost.cn/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA)
Host: www.svnhost.cn
Connection: Keep-Alive
該數(shù)據(jù)包表示請(qǐng)求http://www.svnhost.cn/Img.ashx?img=svn_work.gif文件。我們可以看到Referer表示上一頁(yè)請(qǐng)求頁(yè)面地址,也就是文件來源。Host表示當(dāng)前請(qǐng)求的主機(jī)地址。
下面是一個(gè)盜鏈的數(shù)據(jù)包
GET /Img.ashx?img=svn_work.gif HTTP/1.1
Accept: */*
Referer: http://745.cc/
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA)
Host: www.svnhost.cn
Connection: Keep-Alive
我們可以看到,上面兩個(gè)數(shù)據(jù),表示對(duì)于同一個(gè)文件:http://www.corange.cn/Img.ashx?img=svn_work.gif的請(qǐng)求過程,這里的不同就是Referer,也就是都是請(qǐng)求同一個(gè)文件,但是請(qǐng)求的來源是不同的。因此我們可以在程序里判斷是否是來源于當(dāng)前服務(wù)器,來判斷是否是盜鏈。明白原理以后,實(shí)現(xiàn)防盜鏈就非常簡(jiǎn)單了。下面以圖片防盜鏈來實(shí)現(xiàn)一個(gè)演示。ASP.NET中添加一個(gè)img.ashx文件,然后后臺(tái)代碼如下:
復(fù)制代碼 代碼如下:

using System;
using System.Collections;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace GetImage
{
/// <summary>
/// $codebehindclassname$ 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Img : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/jpg";
if (context.Request.UrlReferrer != null && context.Request.UrlReferrer.Host.Equals(context.Request.Url.Host, StringComparison.InvariantCultureIgnoreCase))
context.Response.WriteFile(context.Server.MapPath("~/" + context.Request.QueryString["img"]));
else
context.Response.WriteFile(context.Server.MapPath("~/logo.gif"));
}
public bool IsReusable
{
get
{
return false;
}
}
}
}

表示如果來源不為空,并且來源的服務(wù)器和當(dāng)前服務(wù)器一致,那就表示是正常訪問,非盜鏈。正常訪問文件內(nèi)容。
否則就是盜鏈,返回網(wǎng)站LOGO。
你甚至可以做成隨機(jī)返回正確的圖片,隨機(jī)返回錯(cuò)誤圖片,或者定時(shí)返回正確圖片,定時(shí)返回錯(cuò)誤圖片。
然后就是圖片的使用了,這時(shí)使用圖片就不是直接<input type="image" src="svn_work.gif" />了,而是<input type="image" src="/Img.ashx?img=svn_work.gif" />,就是說通過img,ashx來讀取圖片。別人盜鏈的話要用下面代碼:<input type="image" src="http://www.corange.cn/Img.ashx?img=svn_work.gif" />。

相關(guān)文章

最新評(píng)論

田东县| 铜梁县| 微博| 新民市| 怀集县| 饶阳县| 鄂伦春自治旗| 华阴市| 东兴市| 五河县| 周宁县| 渭南市| 徐州市| 武夷山市| 临夏县| 襄樊市| 陆良县| 高邮市| 登封市| 理塘县| 德格县| 和平区| 兴安盟| 沾益县| 界首市| 温泉县| 固阳县| 沧源| 体育| 丹寨县| 将乐县| 西丰县| 新宁县| 边坝县| 防城港市| 济南市| 塘沽区| 渝北区| 鄱阳县| 上蔡县| 铁力市|