.net網站上上傳的各類文檔、附件,由于保密、版權等原因,不希望被未被授權的用戶下載,同時登錄了的用戶可以根據授權進行下載,服務器如果不做特殊處理,只要知道了文檔附件的實際地址,無法防止非法下載,網上介紹的改變IIS映射、修改web.config再自定義httphandler判斷登錄與否的方法操作復雜,不易實現,經對自己網站的研究,找到了一種比較方便實現的方法。
創新互聯專業提供重慶服務器托管服務,為用戶提供五星數據中心、電信、雙線接入解決方案,用戶可自行在線購買重慶服務器托管服務,并享受7*24小時金牌售后服務。總體思路是:一、禁止相關文件夾內指定的文件類型可通過瀏覽器訪問;二、使用一個下載模塊通過物理地址以文件流的方式下載附件,同時可在下載模塊中進一步判斷權限。
一、禁止指定類型附件的訪問
在指定文件夾(如:UploadFiles)內新建一個web.config文件,內容為:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<addfileExtension=".rar" allowed="false" />
<addfileExtension=".zip" allowed="false" />
<addfileExtension=".xls" allowed="false" />
<addfileExtension=".xlsx" allowed="false" />
<addfileExtension=".docx" allowed="false" />
<addfileExtension=".doc" allowed="false" />
<addfileExtension=".pdf" allowed="false" />
<addfileExtension=".swf" allowed="false" />
<addfileExtension=".ceb" allowed="false" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>
這樣UploadFiles文件夾內的上述擴展名的文件就不能通過瀏覽器直接訪問了,如果是想對整個網站進行限制,以上內容就寫入根部web.config相關的節,上面這些設置也可以在IIS管理器的“請求篩選”中完成。
二、使用下載模塊處理下載
新建一個aspx程序downatt.aspx:
downatt.aspx代碼:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="downAtt.aspx.cs"Inherits="downAtt"%>
downatt.aspx.cs代碼:
using System;
public partialclassdownAtt : System.Web.UI.Page
{
protectedvoidPage_Load(object sender, EventArgse)
{
stringfilepath = Server.MapPath(Request.QueryString["file"]);//取文件“file”的物理路徑
string[]filename1 = filepath.Split('/');
stringfilename = filename1[filename1.Length-1];//取得文件名
System.IO.FileInfo file = newSystem.IO.FileInfo(filepath);
Response.Clear();
// Response.ContentEncoding = System.Text.Encoding.UTF8;
//添加頭信息,為"文件下載/另存為"對話框指定默認文件名
Response.AddHeader("Content-Disposition", "p_w_upload;filename=" + Server.UrlEncode(filename));
//添加頭信息,指定文件大小,讓瀏覽器能夠顯示下載進度
Response.AddHeader("Content-Length",file.Length.ToString());
Response.ContentType = "application/octet-stream";
//把文件流發送到客戶端
Response.WriteFile(file.FullName);
//停止頁面的執行
Response.End();
}
}
三、下載附件
通過downatt.aspx下載附件:
訪問downatt.aspx?file=附件路徑(如:uploadfile/a.doc)就可以下載了。
四、進一步設置
網站web.config中配置登錄控制,
<authenticationmode="Forms">
<forms loginUrl="~/ Login.aspx"name=".ASPXAUTH" defaultUrl=" Default.aspx"timeout="30"path="/" /> //Login.aspx 為登錄模塊
</authentication>
<authorization>
<deny users="?" /> //禁止匿名用戶訪問
</authorization>
只要訪問網站上的aspx等程序就必須登錄,通過以上這些處理就有效地防止了指定的附件被非法下載。另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享名稱:.NET防止地址欄直接下載,保護網站上文檔、附件的方法-創新互聯
文章出自:http://m.newbst.com/article20/dpejjo.html
成都網站建設公司_創新互聯,為您提供網站排名、做網站、自適應網站、面包屑導航、用戶體驗、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯