当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET 图片防盗链的实现原理分析

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

博狗网好博,jjj16,九制芙康软膏

那么我来介绍下图片放盗链的一个方法
首先,添加个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,下载地址:


这个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" />这里要注意的就是&(&)

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网