当前位置: 首页 > 编程日记 > 正文

ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】

ASP.NET2.0雷霆之怒盗链者的祝福

作者:清清月儿

主页:http://blog.csdn.net/21aspnet/           时间:2007.3.28

所谓盗链就是指其他网站把我们站点的文件链接帖到他们站上,这样白白占用我们的带宽。访问对于网站盗链行为,是非常不道德的。要实现防盗链,我们就得在IIS处理URL时拦截。

效果图:

未加防盗链之前:hm是我的机器名,用http://hm/myweb/default.aspx和http://localhost/myweb/default访问结果一样。
这幅图片是任人宰割的。

加了防盗链之后虽然还是同一个网站但是http://hm/myweb/default.aspx已经不能访问那副花卉图片,被以下图片替代:

加了防盗链之后用localhost还是正常的!http://localhost/myweb/default访问结果一样。

原理:

其实hm是我的机器,但是由于服务器域名是localhost所以即使是同一个网站也不能访问,所以就更别说
www.其他网站域名.com这样的网站偷取我们的资源。关键就是IIS对所有的请求进行过滤看看是不是本站域名的。

全部代码:

Web.Config
<?xml version="1.0"?>
<!--
    注意: 除了手动编辑此文件以外,您还可以使用
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在
    machine.config.comments 中,该文件通常位于
    /Windows/Microsoft.Net/Framework/v2.x/Config 中
-->
<configuration>
 <appSettings/>
 <connectionStrings/>
 <system.web>
    <httpHandlers>
      <add verb="*" path="*.jpg" type="myhandler,App_Code"/>
    </httpHandlers>
    <!--
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只在开发过程中将此值
            设置为 true。
        -->
  <compilation debug="true"/>
  <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的
            安全身份验证模式,
            以标识传入的用户。
        -->
  <authentication mode="Windows"/>
  <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
 </system.web>
</configuration>

 myhandler.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/JPEG";
            context.Response.WriteFile("~/no.gif");//被替换图片
        }
        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("~/no.gif");
            }
        }
    }
    public bool IsReusable
    {
        get { return true; }
    }
    public myhandler()
    {
    }
}

Default.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>清清月儿http://blog.csdn.net/21aspnet</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <img src="pic130.jpg" /></div>
    </form>
</body>
</html>

pic130.jpg

no.gif

IIS的配置:

配置应用程序扩展:添加一个.jpg的扩展!

注意:在本地的context.Request.UrlReferrer.Host就是localhost,
我开始以为http://localhost/A/和http://localhost/B/是不同的
context.Request.UrlReferrer.Host,那就是大错特错。http://localhost/A/http://localhost/B/的context.Request.UrlReferrer.Host都是localhost,所以测试一个用localhost,所以,本地测试用机器名例如我的是hm测试即可。经过处理后用机器名访问就不行,虽然还是同一个站点,同一个文件,此处请多注意。

下面是怎么防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("1.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();
 
  }

4、  最后一步就是在IIS里增加一个应用程序扩展。在“默认网站”->“属性”->“主目录”->“配置”。在弹出的“应用程序配置”窗口里按“添加”,在弹出的“添加/编辑应用程序扩展名映射”窗口里“可执行文件”选择C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,在扩展名里输入“.rar”,然后确定即可。

5、  在IE里输入http://localhost/web/1.rar,会立即跳转到http://localhost/web/WebForm1.aspx,然后按WebForm1.aspx的“下载”按钮就可以下载1.rar了。

相关文章:

数通手稿留档——BGP

本文转自Grodd51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/juispan/1954062&#xff0c;如需转载请自行联系原作者

ASP.NET2.0打通文件图片处理任督二脉【月儿原创】

ASP.NET2.0打通文件图片处理任督二脉 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.1 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上…

PaaS变厚了

通过与包括东方通等在内的众多厂商的合作&#xff0c;华云数据的运营型PaaS变得越来越厚实。借助PaaS Plus的推出&#xff0c;华云数据要把云化的工作前移&#xff0c;在产品开发和测试阶段就开始云化&#xff0c;这会让传统企业的云化取得更好的效果。“PaaS是个筐&#xff0c…

国内首个零信任技术标准发布 腾讯安全牵头编制

7月7日&#xff0c;中国电子工业标准化技术协会发布了国内首个零信任技术实现标准——T/CESA 1165-2021《零信任系统技术规范》团体标准&#xff0c;填补了国内零信任领域的技术标准空白。 &#xff08;《零信任系统技术规范》&#xff09; 据悉&#xff0c;该标准由腾讯安全牵…

集群概述及原理笔记(1)

it你好linux学习文档之集群概述及原理笔记(1) 一 前言 目前&#xff0c;越来越多的网站采用Linux操作系统&#xff0c;提供邮件、Web、文件存储、数据库等服务。也有非常多的公司在企业内部网中利用Linux服务器提供这些服务。随着人们对Linux服务器依赖的加深&#xff0c;对其…

ASP.NET2.0 遍历文件夹下所有图片【月儿原创】

ASP.NET2.0 遍历文件夹下所有图片 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.4 1.以下目录有若干图片&#xff08;都是大图片&#xff09; 2.在页面展现效果图 3.代码 后台代码using System;using Sy…

如何看待那些互相矛盾的论文?

原文&#xff1a;How to Make Sense of Contradictory Science Papers作者&#xff1a;Haixin Dang&#xff08;利兹大学博士后研究员&#xff09;、Liam Kofi Bright&#xff08;伦敦经济学院的哲学系助理教授&#xff09;译者&#xff1a;武文浩相信你已经读到过一些相互矛盾…

gdb图形化调试工具总结

gdb除了命令行方式等的调试之外&#xff0c;还有图形化的调试工具&#xff0c;下面列举一些供参考 1&#xff1a;insight 2: ddd 3: kgdb 4: xxgdb 其它的工具欢迎补充

ATLAS入门篇之CascadingDropDown控件编程

一、引言本文将通过具体的步骤解释如何借助于数据库&#xff08;Microsoft SQL Server 2005 Express Edition&#xff09;数据创建一个ASP.NET AJAX 1.0 CascadingDropDown控件。在本文示例中&#xff0c;我们将使用此层叠下拉列表框控件来选择要显示的汽车模型信息。【作者注】…

ASP.NET2.0 永恒密码之戒【月儿原创】

ASP.NET2.0 永恒密码之戒 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.8 1.我们经常有这样的情形&#xff1a; 就是用户注册时由于某个信息填写错误要重新填写。但是这个过程经过了服务器PostBack。所以密码…

GitHub 遭抵制!AI 代码生成神器竟成“抄袭工具”?

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;上周&#xff0c;微软、GitHub、OpenAI 三方联手推出的 AI 代码生成神器 GitHub Copilot 一经官宣便引起巨大关注&#xff1a;试问哪个开发者不想要这么一位“虚拟程序员”来解放自己的双手&#xff1f…

LAMP的安装及Xcache的配置

LAMP是LinuxApacheMySQLPHP的简称&#xff0c;意指以Linux作为服务器的操作系统&#xff0c;以Apache的HTTPD作为Web服务器&#xff0c;以PHP作为动态网页的解释器&#xff0c;以MySQL作为后端数据库管理系统&#xff0c;由此而搭建起来的一套Web服务器系统。为方便起见&#x…

Windows Server 2003 AD升级到Windows Server 2008 AD的方法及详细步骤

前言&#xff1a; Windows Server 2008 是现在企业比较流行的服务器操作系统&#xff0c;安全性高&#xff0c;配置灵活、方便&#xff0c;集成了Hyper-V虚拟化功能&#xff0c;能够充分发挥硬件的性能。Windows Server 2008改写了底层的网络传输代码&#xff0c;理论上&#x…

ASP.NET2.0 ReportingServices使用详解

ASP.NET2.0 ReportingServices使用详解 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.9本文先做个简单介绍&#xff0c;更多关于ReportingServices的文章见后续。 1.打开BIDS,这是报表开发工具 2.新建项目 3.选择…

输出程序运行的时间(精确到微秒)

对于要求性能的代码&#xff0c;输出程序运行的时间还是很有必要的&#xff0c;而且需要较高的精确度&#xff0c;下面这个代码段就实现了此功能 注意&#xff1a;只限于Linux下使用&#xff0c;因为<sys/time.h>的缘故 1 #include <sys/time.h>2 #include <ios…

售前比售后机器人控制逻辑更复杂,仅凭大规模数据后发优势难赶超!

实现人与机器的自然交互&#xff0c;一直以来都是全世界人类的共同愿望&#xff0c;无数科学家倾尽毕生精力致力于实现这个目标。语言&#xff0c;作为人与外界交流最有效的工具&#xff0c;成为机器智能的重点研究对象&#xff0c;而对话型机器人则成为实现人机交互最早的突破…

JAVAEclipse:could not find the main class,program will exit!

JAVAEclipse:could not find the main class,program will exit! 遇到这个错误主要是当前的工程的jdk与eclipse的版本配置不匹配造成的&#xff0c;修改方法如下&#xff1a; 在当前工程点右键选择Properties->Java Compiler->选中Enable project specific settings->…

ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 【月儿原创】

ASP.NET2.0 文本编辑器FCKeditor的冰冷之心 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.9 FCKeditor是目前最好的html文本编辑器&#xff0c;如果还不明白的话看了下图就知道了效果图: 那么为什么说是FC…

转:strcat与strcpy与strcmp与strlen

转自&#xff1a;http://blog.chinaunix.net/uid-24194439-id-90782.html strcat 原型&#xff1a;extern char *strcat(char *dest,char *src);用法&#xff1a;#include <string.h>功能&#xff1a;把src所指字符串添加到dest结尾处(覆盖dest结尾处的\0)并添加\0。说明…

2021 EdgeX中国挑战赛盛大开幕,英特尔赋能开发者,助力创新方案落地

2021年7月12日&#xff0c;北京中关村论坛隆重举行。论坛上&#xff0c;英特尔研究院副总裁、英特尔中国研究院院长宋继强博士&#xff0c;北京市科委、中关村管委会高科技产业促进中心主任徐剑发表致辞并联合Linux基金会、VMware威睿等单位代表共同宣布2021 EdgeX中国挑战赛开…

构建安全的 ASP.NET 应用程序

最近开发的系统因为用到Asp.net的安全性方面的东西&#xff0c;所以拼命看MSDN&#xff0c;E文看着有点慢&#xff0c;还好现在在MSDN 中文网站中很多文章都有了翻译&#xff0c;所以今天索性在MSDN中文网站上找了一把&#xff0c;还真有。有感兴趣的朋友可以看看&#xff0c;不…

.NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】

.NET2.0隐形的翅膀&#xff0c;正则表达式搜魂者 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.14 本文实现了&#xff1a;只能输入1个数字只能输入n个数字只能输入至少n个数字只能输入m到n个数字只能输入数…

连华为都在研究的计算机视觉,到底有多牛?

去年&#xff0c;华为在CCF-GAIR 大会上介绍了在人工智能领域的愿景&#xff0c;华为为了实现这个战略目标&#xff0c;从中梳理出深耕基础研究、打造全栈方案、投资开放生态和人才培养、解决方案增强、内部效率提升五大方向&#xff0c;以此打造无所不及的AI&#xff0c;构建万…

JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片...

1&#xff0c; 点击弹出图片 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><meta ht…

Nginx+Tomcat实现反向代理与动静分离

1. 什么是动静分离 所谓动静分离就是通过nginx&#xff08;或apache等&#xff09;来处理用户端请求的静态页面&#xff0c;tomcat&#xff08;或weblogic&#xff09;处理动态页面&#xff0c;从而达到动静页面访问时通过不同的容器来处理。 2. 为什么做动静分离 Nginx处理静态…

白话经典算法系列之七 堆与堆排序

堆排序与高速排序&#xff0c;归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前&#xff0c;先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性&#xff1a;1&#xff0e;父结点的键值总是大…

.NET2.0抓取网页全部链接【月儿原创】

.NET2.0抓取网页全部链接 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.18 该方法经过对各大门户网站测试结果是抓取率100%&#xff01; 效果图 后台代码&#xff1a; using System;using System.Data;…

腾讯会议又一黑科技,屏蔽超过 200 种会议噪声是如何做到的?

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;远程会议已成为我们常规的工作沟通方式&#xff0c;在线交流打破时间、空间的限制&#xff0c;给予我们便利之际&#xff0c;也屡遭尴尬&#xff1a;忘记静音&#xff0c;一边听会一边敲键盘&#xff0c…

zabbix之日志文件监控

一、日志item介绍 下面介绍zabbix另一个“重量级”的功能——日志文件监控&#xff0c;它最主要的是监控日志文件中有没有某个字符串的表达式&#xff0c;对应日志轮转与否&#xff0c;zabbix都支持。 在配置Item的时候&#xff0c;Type选择Zabbix agent (active)&#xff…

深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来

作者|Yoshua Bengio,Yann LeCun,Geoffrey Hinton译者|香槟超新星出品|AI科技大本营(ID:rgznai100)人工神经网络领域的研究是基于对人类智能的观察而来&#xff1a;人类智能从高度并行的网络中产生&#xff0c;这些网络由结构相对简单的非线性神经元组成&#xff0c;通过调整连接…