1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

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

        時(shí)間:2020-11-12 20:32:35 ASP 我要投稿

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

          直接分析盜鏈原理:看下面用httpwatch截獲的http發(fā)送的數(shù)據(jù)

          GET /Img.ashx?img=svn_work.gif HTTP/1.1

          Accept: */*

          Referer: /

          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:

          Connection: Keep-Alive

          該數(shù)據(jù)包表示請求/Img.ashx?img=svn_work.gif文件。我們可以看到Referer表示上一頁請求頁面地址,也就是文件來源。Host表示當(dā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:

          Connection: Keep-Alive

          我們可以看到,上面兩個(gè)數(shù)據(jù),表示對于同一個(gè)文件:/Img.ashx?img=svn_work.gif的請求過程,這里的.不同就是Referer,也就是都是請求同一個(gè)文件,但是請求的來源是不同的。因此我們可以在程序里判斷是否是來源于當(dāng)前服務(wù)器,來判斷是否是盜鏈。明白原理以后,實(shí)現(xiàn)防盜鏈就非常簡單了。下面以圖片防盜鏈來實(shí)現(xiàn)一個(gè)演示。ASP.NET中添加一個(gè)img.ashx文件,然后后臺代碼如下:

          復(fù)制代碼 代碼如下:

          using System;

          using System.Collections;

          using System.Data;

          using System.Web;

          using System.Web.Services;

          using System.Web.Services.Protocols;

          namespace GetImage

          {

          ///

          /// $codebehindclassname$ 的摘要說明

          ///

          [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í)使用圖片就不是直接了,而是,就是說通過img,ashx來讀取圖片。別人盜鏈的話要用代碼。

        【asp.net中利用ashx實(shí)現(xiàn)圖片防盜鏈代碼】相關(guān)文章:

        1.防盜鏈接ASP函數(shù)實(shí)現(xiàn)代碼

        2.jQuery實(shí)現(xiàn)左右圖片輪播代碼操作方法

        3.30行代碼實(shí)現(xiàn)Javascript中的MVC

        4.關(guān)于ASP.NET使用JavaScript顯示信息提示窗口實(shí)現(xiàn)原理及代碼

        5.jquery中EasyUI同步樹的實(shí)現(xiàn)代碼

        6.asp.net 組合模式的PHP代碼

        7.利用JQuery動(dòng)畫實(shí)現(xiàn)滑動(dòng)菜單項(xiàng)效果的步驟及代碼

        8.javascript實(shí)現(xiàn)貪吃蛇代碼

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>