Dzwebs.Net

撰写电脑技术杂文十余年

针锋相对—如何防御网站资源被盗链

Admin | 2008-6-1 19:44:35 | 被阅次数 | 7561

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  首先,我们来认识一下什么是盗链与防盗链?

  盗链,简言之,在A网站中引用B网站资源地址,让其显示在A网站中,看似A网站内容,实则非也,貌似略带借花献佛之嫌;

  防盗链,禁止任何网站引用本网站资源,哪怕是被引用,亦无法正确显示资源;

  本来,互联网革命,即为资源的共享与人为互动交流所创;

  然,归根结底,为部分站长所唾骂,原因有二:

  ①盗链者,不尊重知识版权,未经许可,盗用滥发,为君子所不耻!

  ②盗链者,占用原创站长网站带宽,给对方造成不必要的带宽资源的浪费,利己损人,视为不道德!

  ①原因,可忍;②原因,是可忍,孰不可忍;

  为此,本小虾参考网上资源,故做如下收集(非原创,不可称总结);

  要解决这种问题,一靠IIS配置,二靠后台程序处理!

  ①IIS的配置

  打开IIS管理器,找到网站( 或虚拟目录),点击右键并执行“属性”,弹出如下图的对话框!

  上图中,切换到对应的选项卡,点击“配置”按钮,弹出如下图的对话框!

  上图,切换到对应选项卡,点击“添加”按钮,弹出对话框,在可执行文件处输入“c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll”,扩展名处输入“.gif”;并在“脚本引擎”和“确认文件是否存在”两次勾√上;

  上述的网站配置是NET2.0的,如果您使用的不是这个版本,请自行更换路径;

  IIS配置到此结束,以下为后台程序处理代码!

  ②后台程序处理

  1:web.config配置

  在相关节点处添加如下配置:

   <httpHandlers>
         <add verb="*" path="*.gif" type="myhandler,App_Code"/>
      </httpHandlers>

  2:CS代码

  新建一myhandler.cs 类,并将其放入App_Code中
using System;
using System.Web;

/// <summary>
/// myhandler 的摘要说明
/// </summary>

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/gif";
            context.Response.WriteFile("~/no.gif");//被替换图片
        }
        else
        {
            if (context.Request.UrlReferrer.Host.IndexOf("localhost") > -1)//这里是您的网站域名
            {
                context.Response.ContentType = "image/gif";
                context.Response.WriteFile(FileName);
            }
            else
            {
                context.Response.ContentType = "image/gif";
                context.Response.WriteFile("~/no.gif");
            }
        }
    }
    public bool IsReusable
    {
        get { return true; }
    }
    public myhandler()
    {
    }
}

  综上所述,两个中心,两个基本点,防范任务完成!

  知识扩展:

  下面代码是如何防范rar文件被盗用下载:方法和图片类似,不过下载时强迫盗链者定向到我们的站点。代码为网络高人提供!网名“段振兴”;

  1、首先创建一个类库项目ClassLibrary1:

using System;

using System.Web;    // 引用System.Web组件

 public class MyHandler : IHttpHandler

 {

  public MyHandler()

  {

  }

  #region IHttpHandler 成员

  public void ProcessRequest(HttpContext context)

  {

   // 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件

   HttpResponse response = context.Response;

   response.Redirect("../manage/downloads.aspx");

  }

  public bool IsReusable

  {

   get

   {

    // TODO:  添加 MyHandler.IsReusable getter 实现

    return true;

   }

  }

  #endregion

 }

  2、 在配置文件Web.config文件节点里增加如下节点:

    <httpHandlers>
         <add verb="*" path="*.rar" type="myhandler,App_Code"/>
      </httpHandlers>

  3、在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下:

  别忘记了引用using System.IO;

private void Button1_Click(object sender, System.EventArgs e)
  {
   FileInfo file = new System.IO.FileInfo(Server.MapPath("123.rar"));
   Response.Clear();

   Response.AddHeader("Content-Disposition", "filename=" + file.Name);

   Response.AddHeader("Content-Length", file.Length.ToString());

   string fileExtension = file.Extension;

   // 根据文件后缀指定文件的Mime类型

   switch (fileExtension)

   {

    case ".mp3":

     Response.ContentType = "audio/mpeg3";

     break;

    case "mpeg":

     Response.ContentType = "video/mpeg";

     break;

    case "jpg":

     Response.ContentType = "image/jpeg";

     break;

    case "........等等":

     Response.ContentType = "....";

     break;

    default:

     Response.ContentType = "application/octet-stream";

     break;

   }

   Response.WriteFile(file.FullName);

   Response.End();
 
  }

  上述方法,均需要对IIS进行设置,设置方法同上!


该杂文来自: 网站开发杂文

上一篇:网站图片附盗链asp.net(c#)源代码

下一篇:如何给动态的或静态的CheckBoxList多选钮添加选择

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计