欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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è)面地址,也就是文件來(lái)源。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)求過(guò)程,這里的不同就是Referer,也就是都是請(qǐng)求同一個(gè)文件,但是請(qǐng)求的來(lái)源是不同的。因此我們可以在程序里判斷是否是來(lái)源于當(dāng)前服務(wù)器,來(lái)判斷是否是盜鏈。明白原理以后,實(shí)現(xiàn)防盜鏈就非常簡(jiǎn)單了。下面以圖片防盜鏈來(lái)實(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$ 的摘要說(shuō)明
/// </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;
}
}
}
}

表示如果來(lái)源不為空,并且來(lái)源的服務(wù)器和當(dāng)前服務(wù)器一致,那就表示是正常訪問(wèn),非盜鏈。正常訪問(wèn)文件內(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" />,就是說(shuō)通過(guò)img,ashx來(lái)讀取圖片。別人盜鏈的話要用下面代碼:<input type="image" src="http://www.corange.cn/Img.ashx?img=svn_work.gif" />。

相關(guān)文章

  • asp.net導(dǎo)出excel數(shù)據(jù)的常見方法匯總

    asp.net導(dǎo)出excel數(shù)據(jù)的常見方法匯總

    這篇文章主要介紹了asp.net導(dǎo)出excel數(shù)據(jù)的常見方法,實(shí)例匯總了數(shù)據(jù)導(dǎo)出的常見的方法以及相關(guān)的注意事項(xiàng),是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • C# .Net動(dòng)態(tài)調(diào)用webService實(shí)現(xiàn)思路及代碼

    C# .Net動(dòng)態(tài)調(diào)用webService實(shí)現(xiàn)思路及代碼

    動(dòng)態(tài)調(diào)用web服務(wù)將執(zhí)行以下步驟:獲取WSDL/生成客戶端代理類代碼/設(shè)定編譯參數(shù)/編譯代理類/生成代理實(shí)例,并調(diào)用方法,很詳細(xì)的,感興趣的你可不要錯(cuò)過(guò)了哈
    2013-02-02
  • ASP.NET Ajax級(jí)聯(lián)DropDownList實(shí)現(xiàn)代碼

    ASP.NET Ajax級(jí)聯(lián)DropDownList實(shí)現(xiàn)代碼

    我想大家對(duì)Ajax已耳熟能詳。自web 2.0概念出現(xiàn)以后,提供更好的用戶體驗(yàn)變得越來(lái)越重要。那么今天我來(lái)講解一下如何使用ASP.NET Ajax和web service構(gòu)建無(wú)刷新級(jí)聯(lián)DropDownList(以下簡(jiǎn)稱為級(jí)聯(lián)DDL)。完成的效果圖
    2008-12-12
  • 詳解ASP.NET Core 網(wǎng)站發(fā)布到Linux服務(wù)器

    詳解ASP.NET Core 網(wǎng)站發(fā)布到Linux服務(wù)器

    本篇文章主要介紹了ASP.NET Core 網(wǎng)站發(fā)布到Linux服務(wù)器 。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Asp.Net修改上傳文件大小限制方法

    Asp.Net修改上傳文件大小限制方法

    本文主要分享了Asp.Net修改上傳文件大小限制的方法--修改web.config,需要的朋友可以看下
    2016-12-12
  • 一個(gè)簡(jiǎn)單的自定義程序日志小樣例

    一個(gè)簡(jiǎn)單的自定義程序日志小樣例

    前面一篇文章大概說(shuō)了下自己對(duì)日志的一點(diǎn)理解,可能不太直觀,這里再附上一個(gè)簡(jiǎn)單的使用例子,以作為對(duì)之前的補(bǔ)充,例子比較簡(jiǎn)單,所以直接看注釋即可。
    2009-07-07
  • 使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

    使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程

    這篇文章介紹了使用Supervisor守護(hù)ASP.NET?Core應(yīng)用程序進(jìn)程的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(一)

    ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限(一)

    這篇文章主要介紹了ASP.NET.4.5.1+MVC5.0設(shè)置系統(tǒng)角色與權(quán)限的部分內(nèi)容,后續(xù)我們將繼續(xù)討論這個(gè)話題,希望小伙伴們喜歡。
    2015-01-01
  • .NET 中的 常量字段const應(yīng)用介紹

    .NET 中的 常量字段const應(yīng)用介紹

    C#中,當(dāng)使用常數(shù)符號(hào)const時(shí),編譯器首先從定義常數(shù)的模塊的元數(shù)據(jù)中找出該符號(hào),并直接取出常數(shù)的值,接下來(lái)詳細(xì)介紹,感興趣的朋友可以參考下
    2013-01-01
  • Asp.net中防止用戶多次登錄的方法

    Asp.net中防止用戶多次登錄的方法

    在web開發(fā)時(shí),有的系統(tǒng)要求同一個(gè)用戶在同一時(shí)間只能登錄一次,也就是如果一個(gè)用戶已經(jīng)登錄了,在退出之前如果再次登錄的話需要報(bào)錯(cuò)。
    2008-08-08

最新評(píng)論