防盗链原理
一般不良网站为了不增加成本的前提下扩充自己站点的内容,经常盗用其他网站的资源,
这种现象称为到了可以使用HttpHandler技术解决问题
网站盗链 一般引用资源在网上的绝对地址
查找绝对地址一般 右键点击资源 弹出属性窗口 即可查看绝对路径 (url)
实例代码
//被盗链图片
<div>
<img src="11.jpg" />
</div>
<div>
<img src="http://localhost:2297/11.jpg" />
<img src="http://pic6.huitu.com/res/20130116/84481_20130116142820494200_1.jpg" />
</div>
//防盗链
namespace ch2
{
public class ImgFDL : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
//当盗链判定依据:上次请求的主机和端口与本次请求的主机和端口是否一致,不一致则为盗链
//上次请求的URl
Uri lastUrl = context.Request.UrlReferrer;
Uri nextUrl = context.Request.Url;
//判定 主机和 端口是否相同
if (lastUrl.Host!=nextUrl.Host||lastUrl.Port!=nextUrl.Port)
{
//获取请勿盗链图骗
string path = context.Request.PhysicalApplicationPath + "timg.jpg";
//发送至客户端
context.Response.WriteFile(path);
}
else
{
context.Response.WriteFile(context.Request.PhysicalPath);
}
}
}
}
<system.webServer>
<handlers>
<add verb="*" name="ImgFDL" path="*.jpg" type="ch2.ImgFDL"/>
</handlers>
</system.webServer>