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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發布時間:2023/11/27 生活经验 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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了。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。