狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

ASP.NET虛擬主機的重大安全隱患(一)

ASP.NET虛擬主機的重大安全隱患(一)

更新時間:2024-04-08 文章作者:未知 信息來源:網絡 閱讀次數:

 
2002-07-01· ·秦海鵬··yesky

說明:本文中所有程序均在Windows 2000 Server中文版 + SP2上編譯運行無誤
開發環境:.Net 框架1.0 Version 1.0.3705

  一、ASP.NET虛擬主機存在的重大隱患

  我曾經在WWW.BRINKSTER.COM申請了一個免費的ASP.NET空間,上傳了兩個程序,其中一個查看目錄和文件的程序證明我的判斷:ASP共享空間服務器存在的一個安全問題,在 ASP+ 共享空間服務器中依然存在并且變得更加難以防范!通過這個程序我可以瀏覽所有用戶的ASP+程序,可以查看服務器的系統日志……,當然,如果我想刪除什么的話也不會有什么問題。為了讓大家更清楚地了解這一問題,我們有必要簡單介紹一下ASP中就已經存在的這一問題。

  ASP中常用的標準組件:FileSystemObject,這個組件為 ASP 提供了強大的文件系統訪問能力,可以對服務器硬盤上的任何有權限的目錄和文件進行讀寫、刪除、改名等操作。FSO對象來自微軟提供的腳本運行庫scrrun.dll中。

  使用下面的代碼就可以在ASP中創建一個FSO對象:

  Set fso = CreateObject("Scripting.FileSystemObject")

  我們使用fso對象包含的屬性和方法,如Drive、Drives、Folder、Floders、File、Files等對服務器的磁盤、目錄和文件進行讀、寫、刪除等操作。這一強大的文件系統訪問能力給ASP共享空間提供者帶來了嚴重的安全問題,很多ASP空間的管理員都刪除此組件或將這個組件改名以避免用戶使用這一標準組件。刪除組件或組件改名確實是一個簡單的方法并且也很有效,但是卻使廣大用戶無法使用它的強大的功能。網絡上還有一種看起來很美的方案,它允許用戶使用 FileSystemObject 組件又不影響服務器的安全,即對每一個用戶都設置一個獨立的服務器用戶和單個目錄的操作權限。但是這種方法是有問題的。因為ASP和ASP.NET中在這方面的問題十分類似,所以我們將在ASP.NET的相應解決辦法部分詳加說明。

  在ASP.NET中我們發現這一問題仍然存在,并且變得更加難以解決。這是因為.NET中關于系統IO操作的功能變得更加強大,而使這一問題更嚴重的是ASP.NET所具有的一項新功能,這就組件不需要象ASP那樣必須要使用regsvr32來注冊了,只需將Dll類庫文件上傳到bin目錄下就可以直接使用了。這一功能確實給開發ASP.NET帶來了很大的方便,但是卻使我們在ASP中將此dll刪除或者改名的解決方法失去效用了,防范此問題就變得更加復雜。在討論解決方案之前,我們先來看一下怎么來實現上述的危險的功能。

二、文件系統操作示例

  在我們編寫代碼之前,有必要了解一下我們需要用到的幾個主要的類。這幾個類都在System.IO名稱空間下,System.IO 名稱空間包含允許在數據流和文件上進行同步和異步讀寫的類。

  在整個應用程序的開始部分我們需要了解一下服務器的系統信息,這就需要用到System.Environment類,該類提供有關當前環境和平臺的信息以及操作它們的方法。我們通過System.Environment類可以得到系統的當前目錄和系統目錄,這可以使我們更快的發現幾個關鍵的目錄;我們還可以通過獲取運行當前進程的用戶名來幫助我們了解ASP.NET程序運行所使用的用戶,進一步設置用戶權限以避免這一安全問題。

  我們還要使用System.IO名稱空間的其他幾個類是:

  System.IO.Directory:提供用于創建、移動和枚舉通過目錄和子目錄的靜態方法的類

  System.IO.File:提供用于創建、復制、刪除、移動和打開文件的靜態方法的類

  System.IO.FileInfo:提供創建、復制、刪除、移動和打開文件的實例方法的類

  System.IO.StreamReader:實現一個 TextReader,使其以一種特定的編碼從字節流中讀取字符。

  每個我們所使用的類的屬性和方法的具體用法我們將以代碼注釋的方式在程序中加以說明。

  System.IO名稱空間在 .NET FRAMEWORK提供的mscorlib.dll中,在使用VS.Net編程之前需要將此Dll引用到此項目中。

  我們所編寫的程序都使用了Codebehind方式,即每一個aspx程序都有一個對應的aspx.cs程序,aspx程序中只是寫與頁面顯示相關的代碼,所有邏輯實現的代碼都放在相應的aspx.cs文件中,這樣就可以更好得做到顯示與邏輯的分離。由于我們的目的不是討論Codebehind技術,所以就不在對此多加討論了。

  在這篇文章里,我們只介紹幾個主要的類及其關鍵方法的用法,詳細程序請查看附帶的源代碼。

  程序一:顯示服務器的當前信息和全部邏輯驅動器的名稱的程序listdrivers.aspx

  主要方法1:我們使用 GetSysInf() 方法來得到服務器的當前環境和平臺的信息

//獲取系統信息的方法,此方法在listdrivers.aspx.cs文件中
public void GetSysInf () {
//獲取操作系統類型
qDrives = Environment.OSVersion.ToString();
//獲取系統文件夾
qSystemDir = Environment.SystemDirectory.ToString();
/*獲取映射到進程上下文的物理內存量,通過這一內存映射量可以了解ASP.NET程序在運行時需要多少系統物理內存,有助于更好的規劃我們的整個應用,因為物理內存量是以Byte為單位的,所以我們將此數值除以1024,可以得到單位為KB的物理內存量*/
qMo = (Environment.WorkingSet/1024).ToString();
//獲取當前目錄(即該進程從中啟動的目錄)的完全限定路徑
qCurDir = Environment.CurrentDirectory.ToString();
//獲取主機的網絡域名
qDomName = Environment.UserDomainName.ToString();
//獲取系統啟動后經過的毫秒數
qTick = Environment.TickCount;
//計算得到系統啟動后經過的分鐘數
qTick /= 60000;
//獲取機器名
qMachine = Environment.MachineName;
//獲取運行當前進程的用戶名
qUser = Environment.UserName;
/*檢索此計算機上格式為"<驅動器號>:\"的邏輯驅動器的名稱,返回字符串數組,這是下一步操作的關鍵所在*/
achDrives = Directory.GetLogicalDrives();
//獲取此字符串數組的維數,確定有多少個邏輯驅動器
nNumOfDrives = achDrives.Length;
}


  系統信息不需要進行操作,我們簡單的用asp:Label將他們顯示出來就行了。邏輯驅動器的個數在不同的服務器上是不定的,所以用不定長數組保存邏輯驅動器的名稱,而且邏輯驅動器的名稱也是我們下一步瀏覽目錄和文件的基礎,故我們采用了數據網格DataGrid來顯示和處理它。

  顯示和處理邏輯驅動器名稱的DataGrid的代碼(代碼在listdrivers.aspx文件):


<asp:DataGrid id="DriversGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn HeaderText="ID" DataField="ID" />
<asp:BoundColumn HeaderText="磁盤名" DataField="Drivers" />
<asp:HyperLinkColumn
HeaderText="詳細信息"
DataNavigateUrlField="Drivers" DataNavigateUrlFormatString="listdir.aspx?dir={0}"
DataTextField="Detail"
Target="_new" />
</Columns>
</asp:DataGrid>

  前兩個BoundColumn列都是顯示序號和實際邏輯驅動器名稱的,需要說明的是第三列,我們在進入各個邏輯驅動器顯示目錄和文件之前需要將所選擇的邏輯驅動器的名稱傳遞到顯示目錄的文件去,所以需要一個特殊的超級鏈接行HyperLinkColumn,我們將DataNavigateUrlField設置為數據源中要綁定到 HyperLinkColumn 中的超級鏈接的 URL 的字段,在此即邏輯驅動器名稱。然后將DataNavigateUrlFormatString設置為當 URL 數據綁定到數據源中的字段時,此HyperLinkColumn中的超級鏈接的 URL 的顯示格式,即要鏈接到的下一級處理頁面,在此為listdir.aspx?dir={用戶點擊行的邏輯驅動器名稱}
創建數據源的代碼(代碼在listdrivers.aspx.cs文件中):




//通過此方法返回一個集合形式的數據視圖DataView
ICollection CreateDataSource() {
//定義內存中的數據表DataTable
DataTable dt = new DataTable();
//定義DataTable中的一行數據DataRow
DataRow dr;
/*向DataTable中增加一個列,格式:DataColumn("Column", type)
Column為數據列的名字,type為數據列的數據類型*/
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("drivers", typeof(string)));
dt.Columns.Add(new DataColumn("detail", typeof(string)));
//使用for循環將邏輯驅動器的名稱以行的形式添加到數據表DataTable中
for (int i = 0; i < nNumOfDrives; i++) {
//定義新行
dr = dt.NewRow();
//對行中每列進行賦值,注意要與上邊定義的DataTable的行相對應
dr[0] = i; //循環生成的序號
dr[1] = achDrives[i].ToString(); //邏輯驅動器的名稱
dr[2] = "查看詳情";
//向DataTable中添加行
dt.Rows.Add(dr);
}
//根據得到的DataTable生成自定義視圖DataView
DataView dv = new DataView(dt);
//返回得到的視圖DataView
return dv;
}

  我們通過這個方法得到了一個包含所有我們需要的數據的數據視圖DataView,我們只需要在此aspx頁的Page_Load方法中將此數據視圖綁定到DataGrid上就可以了。

  數據綁定代碼(代碼在listdrivers.aspx.cs文件中):

/* 設置DataGrid的數據源DataSource為我們從CreateDataSource()方法得到的數據視圖DataView */
DriversGrid.DataSource = CreateDataSource();
//將此DataGrid進行數據綁定
DriversGrid.DataBind();

  通過上邊介紹的幾種主要方法我們就實現了獲取系統信息和顯示所有邏輯驅動器名稱的功能,并且可以通過相應的鏈接進入下一個顯示目錄和文件名的程序listdir.aspx顯示該邏輯驅動器下的所有目錄和文件。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
91蜜桃在线免费视频| 久久精品视频一区| 久久久亚洲午夜电影| 91亚洲精品乱码久久久久久蜜桃| 欧洲精品在线观看| 久久久另类综合| 午夜婷婷国产麻豆精品| 波多野结衣亚洲一区| 一区二区三区你懂的| 9191成人精品久久| 亚洲制服丝袜av| av在线一区二区| 久久综合伊人77777麻豆| 欧美国产精品v| 黑人精品欧美一区二区蜜桃| 亚洲理论在线| 精品国产亚洲在线| 日韩不卡一二三区| 最新国产拍偷乱拍精品| 欧美tickling挠脚心丨vk| 天天色综合成人网| 国产一区二区无遮挡| 免费日韩精品中文字幕视频在线| 欧美精品一区二区蜜臀亚洲| 蜜臀久久99精品久久久久宅男| 欧美日韩精品综合| 日韩精品一区国产麻豆| 麻豆精品视频在线观看免费| 在线亚洲美日韩| 久久综合九色综合久久久精品综合| 奇米色777欧美一区二区| 1000部精品久久久久久久久| 久久综合九色综合欧美98 | av不卡免费电影| 欧美中文字幕久久| 亚洲第一激情av| 亚洲福利免费| 国产精品无码永久免费888| 丁香激情综合五月| 欧美日韩成人综合| 开心九九激情九九欧美日韩精美视频电影 | 欧洲精品在线观看| 午夜国产精品一区| 亚洲一区观看| 亚洲综合精品自拍| 亚洲精品四区| 亚洲激情成人在线| 亚洲另类黄色| 亚洲欧美国产三级| 亚洲大胆女人| 亚洲精品一二三四区| 国内精品久久久久久久影视麻豆| 久久久久97国产精华液好用吗 | 国产人久久人人人人爽| 99久久久精品免费观看国产蜜| 日韩一区二区三区三四区视频在线观看| 另类欧美日韩国产在线| 欧美日韩亚洲综合一区二区三区| 强制捆绑调教一区二区| 久久久精品日韩| 奇米四色…亚洲| 欧美唯美清纯偷拍| 国产精品自产自拍| 日韩精品一区国产麻豆| 不卡视频在线观看| 国产网站一区二区| 狠狠爱www人成狠狠爱综合网| 国产精品久久久久久福利一牛影视| 欧美日韩一区二区视频在线| 综合激情成人伊人| 国产精品视频久久一区| 亚洲一二三区视频在线观看| 色婷婷av一区二区三区gif| 久久国产精品色婷婷| 日韩一区二区在线观看| 欧美69视频| 亚洲精品国产品国语在线app| 午夜在线一区二区| 麻豆一区二区三| 欧美精品一区二区三区蜜桃视频 | 亚洲第一二三四区| 欧美亚一区二区| 成人免费av资源| 国产精品久久久久久久久晋中| 国产一级久久| 久久69国产一区二区蜜臀| 欧美电影免费观看高清完整版| 欧美在线网址| 亚洲国产一区二区在线播放| 欧美三级三级三级| 欧美一区久久| 午夜不卡av在线| 日韩一区二区三区电影在线观看| 色综合天天综合网天天看片| 亚洲综合免费观看高清完整版| 欧美久久一区二区| 黑人一区二区| 美国十次了思思久久精品导航| 26uuu久久综合| 99热这里只有成人精品国产| 狠狠色狠狠色合久久伊人| 国产精品私人影院| 在线亚洲+欧美+日本专区| 成人综合日日夜夜| 亚洲一区中文日韩| 日韩亚洲欧美高清| 国产一区二区高清| 欧美一区二区三区影视| 欧美国产三区| 久久精品久久精品| 中文字幕在线观看一区二区| 欧美亚一区二区| 亚洲性人人天天夜夜摸| 久久精品国产99国产| 亚洲欧洲国产日本综合| 538在线一区二区精品国产| 亚洲精华国产欧美| 高清在线观看日韩| 午夜精品福利在线| 日本一区二区免费在线| 欧美精品三级日韩久久| 国产亚洲高清视频| 91丝袜美女网| 蜜臀精品久久久久久蜜臀| 中文字幕制服丝袜一区二区三区| 欧美日韩国产另类不卡| 亚洲人体一区| www.欧美色图| 久久精品99久久久| 亚洲一区二区三区美女| 欧美成人一级视频| 99国产精品久久久| 蓝色福利精品导航| 亚洲精品久久久久久国产精华液| 日韩欧美一级二级| 色婷婷精品大在线视频 | 一区二区三区中文字幕精品精品 | 久久精品女人的天堂av| 欧美精品成人| 成人黄色免费短视频| 久久99精品国产91久久来源| 亚洲影院免费观看| 国产精品污污网站在线观看| 精品国产污网站| 欧美人妇做爰xxxⅹ性高电影| 免费亚洲电影| 夜夜嗨一区二区三区| 欧美涩涩视频| 色综合中文字幕国产| 久久国产综合精品| 水蜜桃久久夜色精品一区的特点| 亚洲色图一区二区| 国产精品美女久久福利网站| 久久久精品免费观看| 日韩三级精品电影久久久 | 欧美久久久久久| eeuss影院一区二区三区| 国产黑丝在线一区二区三区| 韩日欧美一区二区三区| 狠狠色狠狠色综合日日91app| 免费久久精品视频| 日韩精品亚洲一区| 日本视频在线一区| 美女在线观看视频一区二区| 天天综合网天天综合色| 日韩黄色免费电影| 免费在线观看一区| 国产在线一区二区| 国产精品一区二区三区乱码| 国产精品中文字幕欧美| 国产高清不卡一区二区| 懂色中文一区二区在线播放| 成人a免费在线看| av不卡免费电影| 欧美日韩一区二区视频在线| 欧美视频四区| 一区二区高清| 老司机一区二区三区| 色偷偷一区二区三区| 欧洲日韩一区二区三区| 欧美一区二区三区视频在线观看 | 国产精品你懂的| 国产精品午夜在线观看| 国产精品福利一区二区| 一区二区三区美女视频| 舔着乳尖日韩一区| 国内一区二区在线| 成人高清伦理免费影院在线观看| 91在线视频免费91| 一区视频在线| 色婷婷国产精品久久包臀| 欧美伦理视频网站| 国产无人区一区二区三区| 亚洲精品中文在线影院| 日本视频一区二区三区| 国产成人精品免费网站| 欧美视频官网| 久久综合久久综合这里只有精品| 91麻豆精品国产91久久久资源速度| 精品福利视频一区二区三区|