ASP.NET 圖片防盜鏈的實現原理分析

來源:互聯網
上載者:User

那麼我來介紹片放盜鏈的一個方法
首先,添加個httpHandlers請求,WEBCONFIG部分配置節如下:
<httpHandlers>
<add verb="*" path="*.jpg" type="myhandler,App_Code"/>
</httpHandlers> 注意:對應於system.web之下,別添錯了哦!
然後添加個class,取名為myhandler繼承於IHttpHandler
class原型如下: 複製代碼 代碼如下:using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class myhandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string FileName = context.Server.MapPath(context.Request.FilePath);
if (context.Request.UrlReferrer.Host == null)
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/images/no.png");//被替換圖片
}
else
{
if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//這裡是你的網域名稱
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}
else
{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("~/images/no.png");
}
}
}
public bool IsReusable
{
get { return true; }
}
public myhandler()
{
}
}

myhandler繼承自IHttpHandler實現了對url來源來判斷jpg圖片是否被盜鏈,本class中以localhost為例,修改localhost和images/no.png參數即可
次方法也可應用於URL偽靜態。
下一次聊片與ASP.NET程式的伺服器分離,歡迎大家光臨本站。

下面是補充
所謂URL靜態化(聲明下:這裡說的是偽靜態,真正網頁靜態化就不說了可以用最簡單的請求返回response實現,但好像久而久之資料量會很龐大,所以就不說了)就是把動態網頁看起來像靜態一樣。如:aspnet.aspx?id=5 靜態化:aspnet-5.html或/aspnet/5

SEO(搜尋引擎最佳化),更青睞於靜態化的網頁,所以網頁靜態化對於專業的SEOer來說還是必須掌握的,下面我告訴大家一個方法來實現在ASP.NET下面的網頁靜態化。

下面給一個DEMO,:http://www.jb51.net/codes/23902.html

這個DEMO實現了網頁的URL的偽靜態,其原理通過匹配url的正則,來進行網頁重新導向,這個DEMO裡面有這麼個config,<add virtualUrl="~/microsoft*.*" destinationUrl="~/default.aspx" />
也就是說請求microsoft.html,microsoft.shtml,microsoft.do都會映射到default.aspx

這個正則把URL重新導向一個頁面,沒有帶參數,我先來介紹下帶參數如何?,下面我加了這個規則
<add virtualUrl="~/default-([0-9]*)" destinationUrl="~/default.aspx?id=$1" />
這個正則匹配了,這樣的URL(假設http://www.xx.com/是你的網域名稱), www.xx.com/microsoft-123 映射到www.xx.com/default.aspx?id=123
那麼就實現了參數的傳遞

多個參數的傳遞可以用如下正則實現,各位高手想用什麼樣的靜態化規則就自己寫正則怎麼實現吧,下面我給出一種目錄化的URL偽靜態規則
<add virtualUrl="~/default/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)" destinationUrl="~/default.aspx?par1=$1&par2=$2" />這裡要注意的就是&(&)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.