日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ASP.NET2.0雷霆之怒盜鏈者的祝福

作者:清清月兒

主頁:http://blog.csdn.net/21aspnet/?????????? 時(shí)間:2007.3.28

所謂盜鏈就是指其他網(wǎng)站把我們站點(diǎn)的文件鏈接帖到他們站上,這樣白白占用我們的帶寬。訪問對(duì)于網(wǎng)站盜鏈行為,是非常不道德的。要實(shí)現(xiàn)防盜鏈,我們就得在IIS處理URL時(shí)攔截。

效果圖:

未加防盜鏈之前:hm是我的機(jī)器名,用http://hm/myweb/default.aspx和http://localhost/myweb/default訪問結(jié)果一樣。
這幅圖片是任人宰割的。

加了防盜鏈之后雖然還是同一個(gè)網(wǎng)站但是http://hm/myweb/default.aspx已經(jīng)不能訪問那副花卉圖片,被以下圖片替代:

加了防盜鏈之后用localhost還是正常的!http://localhost/myweb/default訪問結(jié)果一樣。

原理:

其實(shí)hm是我的機(jī)器,但是由于服務(wù)器域名是localhost所以即使是同一個(gè)網(wǎng)站也不能訪問,所以就更別說
www.其他網(wǎng)站域名.com這樣的網(wǎng)站偷取我們的資源。關(guān)鍵就是IIS對(duì)所有的請(qǐng)求進(jìn)行過濾看看是不是本站域名的。

全部代碼:

Web.Config
<?xml version="1.0"?>
<!--
??? 注意: 除了手動(dòng)編輯此文件以外,您還可以使用
??? Web 管理工具來配置應(yīng)用程序的設(shè)置。可以使用 Visual Studio 中的
???? “網(wǎng)站”->“Asp.Net 配置”選項(xiàng)。
??? 設(shè)置和注釋的完整列表在
??? 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>
??? <!--
??????????? 設(shè)置 compilation debug="true" 將調(diào)試符號(hào)插入
??????????? 已編譯的頁面中。但由于這會(huì)
??????????? 影響性能,因此只在開發(fā)過程中將此值
??????????? 設(shè)置為 true。
??????? -->
??<compilation debug="true"/>
??<!--
??????????? 通過 <authentication> 節(jié)可以配置 ASP.NET 使用的
??????????? 安全身份驗(yàn)證模式,
??????????? 以標(biāo)識(shí)傳入的用戶。
??????? -->
??<authentication mode="Windows"/>
??<!--
??????????? 如果在執(zhí)行請(qǐng)求的過程中出現(xiàn)未處理的錯(cuò)誤,
??????????? 則通過 <customErrors> 節(jié)可以配置相應(yīng)的處理步驟。具體說來,
??????????? 開發(fā)人員通過該節(jié)可以配置
??????????? 要顯示的 html 錯(cuò)誤頁
??????????? 以代替錯(cuò)誤堆棧跟蹤。

??????? <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?類時(shí)系統(tǒng)提示你要放入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的配置:

配置應(yīng)用程序擴(kuò)展:添加一個(gè).jpg的擴(kuò)展!

注意:在本地的context.Request.UrlReferrer.Host就是localhost,
我開始以為http://localhost/A/和http://localhost/B/是不同的
context.Request.UrlReferrer.Host,那就是大錯(cuò)特錯(cuò)。http://localhost/A/http://localhost/B/的context.Request.UrlReferrer.Host都是localhost,所以測(cè)試一個(gè)用localhost,所以,本地測(cè)試用機(jī)器名例如我的是hm測(cè)試即可。經(jīng)過處理后用機(jī)器名訪問就不行,雖然還是同一個(gè)站點(diǎn),同一個(gè)文件,此處請(qǐng)多注意。

下面是怎么防rar文件不從主站下載:方法和圖片類似,不過下載我們強(qiáng)迫他們到我們站點(diǎn)。

1、? 首先創(chuàng)建一個(gè)類庫項(xiàng)目ClassLibrary1:

using System;

using System.Web;??? // 引用System.Web組件

?

?

?public class MyHandler : IHttpHandler

?{

??public MyHandler()

??{

??}

?

??#region IHttpHandler 成員

??public void ProcessRequest(HttpContext context)

??{

???// 跳轉(zhuǎn)到WebForm1.aspx,由WebForm1.aspx輸出rar文件

???HttpResponse response = context.Response;

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

??}

?

??public bool IsReusable

??{

???get

???{

????// TODO:? 添加 MyHandler.IsReusable getter 實(shí)現(xiàn)

????return true;

???}

??}

??#endregion

?}

?

2、? 在配置文件Web.config文件節(jié)點(diǎn)里增加如下節(jié)點(diǎn):

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

3、? 在WebForm1.aspx里增加一個(gè)文本為“下載”的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;

?

???// 根據(jù)文件后綴指定文件的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里增加一個(gè)應(yīng)用程序擴(kuò)展。在“默認(rèn)網(wǎng)站”->“屬性”->“主目錄”->“配置”。在彈出的“應(yīng)用程序配置”窗口里按“添加”,在彈出的“添加/編輯應(yīng)用程序擴(kuò)展名映射”窗口里“可執(zhí)行文件”選擇C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll,在擴(kuò)展名里輸入“.rar”,然后確定即可。

5、? 在IE里輸入http://localhost/web/1.rar,會(huì)立即跳轉(zhuǎn)到http://localhost/web/WebForm1.aspx,然后按WebForm1.aspx的“下載”按鈕就可以下載1.rar了。

總結(jié)

以上是生活随笔為你收集整理的ASP.NET2.0雷霆之怒盗链者的祝福【月儿原创】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。