hysql.org技术站
当前位置:首页 > ASP.NET > 正文

ASP.NET 图片防盗链的实现原理分析

10-06 ASP.NET

那么我来介绍下图片放盗链的一个方法
首先,添加个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" />这里要注意的就是&(&)

相关拓展:北京快网科技有限公司公司介绍

北京快网科技有限公司,自2006年初成立以来,经过七年的高速发展,利用其丰富的管理经验、优秀的专业队伍、强大的网络资源、自主开发的独到技术、客户至上的服务理念,已成为中国领先的云加速(CDN)服务商,目前,在亚太、欧美拥有节点数十处,在国内公司网络节点多达150余处,布遍全国各地重要省市,跨越中国电信、移动、联通、教育网、科技网、长城宽带等各大运营商,使用带宽超过300G,知名客户超过600家。如:新浪、网易、当当网、PPLive、盛大等知名互联网企业的认可均为其提供高质量、高安全性的云加速(CDN)服务,7 X24小时全方位运维中心第一时间响应并解决您的问题。


  北京快网拥有一流的专业研发队伍。不仅在全世界首次提出基于云计算技术的CloudCDN理念,并于2011年自主研发了CloudXNS 和 CloudTCP 二大产品,与CloudCDN组成为快网的三大核心技术, 而且自主开发了一系列的CDN软件服务(SAAS)技术,包括为静态加速,动态加速,流媒体点播分发,分布式网络存储,CDN平台监控,网站访问分析,网络状态探测,火警预警等等,目前,已获得专利11项、软著7项,同时获得业界各类奖项40余项,如:获得红鲱鱼100强,连续三年荣获德勤中国50强和亚太500强,还有中国互联网十大“信心之星”等。目前,北京快网在上海、深圳、香港、美国硅谷,等多个城市设有子公司或办事处。完善的服务体系,优秀的研发队伍,经验丰富的运维团队,都是提供最优质云加速服务的保障。北京快网坚定"更快更好和谐网络"的目标,努力打造专业云加速(CDN)领域的第一品牌。

版权保护: 本文由 首页 原创,转载请保留链接: http://www.hysql.org/aspnet/20181006/37792.html

友情推荐:股票配资 期货配资 股票配资门户 网页制作
博客主人YeLongCu
男,文化程度不高性格有点犯二,已经20来岁至今未婚,闲着没事喜欢研究各种代码,资深技术宅。
  • 文章总数
  • 20101548访问次数
  • 建站天数
  • 标签