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

所属分类: 网络编程 / ASP.NET 阅读数: 1276
收藏 0 赞 0 分享
那么我来介绍下图片放盗链的一个方法
首先,添加个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,下载地址:https://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&amp;par2=$2" />这里要注意的就是&amp;(&)
更多精彩内容其他人还在看

ASP.Net 之Datalist删除功能详解附代码

ASP.Net 之Datalist删除功能详解附代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

ASP.NET(C#)验证数字的两种方法

ASP.NET(C#)验证数字的两种方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

此页的状态信息无效,可能已损坏 的处理办法及原因分析

此页的状态信息无效,可能已损坏 的处理办法及原因分析,需要的朋友可以参考一下
收藏 0 赞 0 分享

MultiLine 换行后实现读取不换行的具体思路

输入内容中有换行,保存到数据库,直接查看感觉没有换行,但查询结果“以文本格式显示结果”你就会发现 其实是有换行的,下面与大家分享下具体的解决方法
收藏 0 赞 0 分享

swfupload ajax无刷新上传图片实例代码

在这里上传图片就需要用到ajax无刷新上传图片,这里面包含的东西不是一点半点。这里用到的是一个插件swfupload实现无刷新上传图片,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

静态gb2312编码在项目传值出现中文乱码现象

参考的美工静态页面是gb2312格式的,当此编码拿到项目中后,utf-8编码的系统,加载页面时,会出现样式问题,比如不能正常居中等
收藏 0 赞 0 分享

System.Timers.Timer定时执行程序示例代码

如果是某个逻辑功能的定时,可以将code放到逻辑功能的类的静态构造函数中,在该逻辑类第一次执行时,静态构造函数会被调用,则定时自然启动
收藏 0 赞 0 分享

分享下Asp.Net面试题目及答案集合

这篇文章主要是总结asp.net开发人员在面试过程中常遇到的一些问题小结,需要的朋友可以参考下
收藏 0 赞 0 分享

给自定义Web控件添加事件(前后台代码)

给自定义控件(Web Control)添加事件具体前后台代码如下,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

ASP.NET过滤器的应用方法介绍

ASP.NET过滤器的应用方法介绍,需要的朋友可以参考一下
收藏 0 赞 0 分享
查看更多