狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
日韩一区和二区| 久久人人超碰精品| 一区二区在线视频观看| 国产一区二区成人久久免费影院 | 亚洲成人激情社区| 国产精品电影一区二区| 26uuu精品一区二区在线观看| 色哦色哦哦色天天综合| 国产另类ts人妖一区二区| 亚洲成人久久影院| 亚洲精品一二三区| 国产精品久久久久一区二区三区| 精品国产乱码久久久久久免费| 欧美午夜精品理论片a级按摩| 亚洲精品自在在线观看| 欧美私人啪啪vps| 亚洲三级毛片| 亚洲精品一区二区三区蜜桃久 | 欧美精品v日韩精品v国产精品| 粉嫩av一区二区三区粉嫩| 国产乱码精品一区二区三区av| 免费观看在线色综合| 婷婷成人综合网| 丝袜美腿亚洲一区| 日日骚欧美日韩| 日本中文字幕一区二区视频| 亚洲h在线观看| 丝袜亚洲精品中文字幕一区| 亚洲夂夂婷婷色拍ww47| 樱桃国产成人精品视频| 亚洲综合成人在线视频| 五月综合激情网| 日韩精品三区四区| 经典三级视频一区| 国内一区二区视频| 成人久久久精品乱码一区二区三区| 国产成人aaa| 蜜桃在线一区二区三区| 日本欧美一区二区在线观看| 天涯成人国产亚洲精品一区av| 丝袜脚交一区二区| 精品在线一区二区| 不卡高清视频专区| 国内综合精品午夜久久资源| 日韩视频一区| 欧美性大战久久久久久久蜜臀| 欧美日韩和欧美的一区二区| 日韩精品一区二区三区在线| 欧美男同性恋视频网站| 精品国产免费久久 | 91精品国产手机| 久久精品一区二区三区不卡牛牛 | 精品国产一区二区三区不卡 | 欧美一区二区视频观看视频| 国产欧美日韩在线视频| 一区二区激情视频| 亚洲gay无套男同| 国产精品888| 国产91丝袜在线18| 欧美二区不卡| 国产精品一页| 日韩亚洲欧美一区二区三区| 久久嫩草精品久久久久| 洋洋av久久久久久久一区| 国内成人免费视频| 亚洲午夜精品一区二区| 在线一区二区三区四区五区| 欧美tk丨vk视频| 亚洲一区二区美女| 不卡av电影在线播放| 一区二区三区四区五区精品视频| 欧美日韩五月天| 国产精品久久久久影院亚瑟| 麻豆精品视频在线观看免费| 国模一区二区三区白浆| 99久久精品免费看国产| 免费视频一区| 欧美精品一区二区久久久| 五月婷婷综合网| 欧美二区在线| 欧美日韩在线亚洲一区蜜芽| 亚洲婷婷综合久久一本伊一区| 国产一区在线观看视频| 一本一本久久| 久久一夜天堂av一区二区三区| 日韩中文字幕一区二区三区| 欧美片第1页综合| 欧美日韩极品在线观看一区| 亚洲主播在线播放| 国产精品综合视频| 香蕉久久夜色精品国产| 久久九九99视频| 秋霞av亚洲一区二区三| 亚洲毛片一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美一区二区视频在线| 在线电影院国产精品| 午夜精品123| 最近看过的日韩成人| 久久久久久一二三区| 国产另类ts人妖一区二区| 色综合久久久久综合| 亚洲蜜臀av乱码久久精品| 精品不卡在线| 国产日产欧美一区| 成人av在线看| 日韩写真欧美这视频| 精品制服美女丁香| 欧洲在线/亚洲| 日韩中文字幕亚洲一区二区va在线| 精品福利电影| 自拍av一区二区三区| 欧美日韩高清在线一区| 精品对白一区国产伦| 丁香网亚洲国际| 欧美一区二区三区四区久久 | 激情另类小说区图片区视频区| 色婷婷综合久久久| 亚洲免费电影在线| 欧美一区国产一区| 日韩欧美成人午夜| 成人综合婷婷国产精品久久免费| 欧美高清一级片在线| 国产精品亚洲午夜一区二区三区 | 欧美一区二区不卡视频| 国产在线看一区| 欧美精品少妇一区二区三区| 久久av资源网| 777午夜精品视频在线播放| 亚洲黄色片在线观看| 欧美高清视频一区| 亚洲蜜臀av乱码久久精品 | 久久av最新网址| 日本美女一区二区三区视频| 久久久久久久久久久久久久一区| 天天综合网天天综合色| 欧美午夜宅男影院| 国产精品一区二区果冻传媒| 米奇777在线欧美播放| 亚洲精品免费电影| 免费在线日韩av| 久久成人久久鬼色| 欧美变态tickling挠脚心| 午夜欧美精品久久久久久久| 亚洲男帅同性gay1069| 美日韩精品视频| 国产成a人无v码亚洲福利| 久久蜜桃av一区二区天堂| 欧美理论在线| 午夜久久电影网| 欧美一级高清片在线观看| 91网站视频在线观看| 亚洲激情男女视频| 欧美在线你懂的| 99久久亚洲一区二区三区青草| 久久奇米777| 欧美日韩 国产精品| 亚洲h精品动漫在线观看| 欧美日韩高清不卡| 欧美久久一级| 蜜臀久久久99精品久久久久久| 日韩欧美在线观看一区二区三区| 欧美国产先锋| 日本三级韩国三级欧美三级| 日韩欧美高清dvd碟片| 91久久国产自产拍夜夜嗨| 老司机精品视频在线| 久久精品综合网| 免费在线一区二区| 成人av中文字幕| 国产三级精品三级在线专区| 久久aⅴ国产紧身牛仔裤| 成人精品视频一区二区三区| 夜夜嗨av一区二区三区中文字幕| 久久久久国产精品麻豆| 欧美精品国产精品| 乱码第一页成人| 亚洲福利av| 色综合网站在线| 国产一区二区在线影院| 日韩精品视频网| 亚洲一区二区三区三| 国产精品国模大尺度视频| 精品成人一区二区三区四区| 欧美男男青年gay1069videost| 亚洲一区二区伦理| 亚洲高清久久| 欧美日韩国语| 欧美freesex交免费视频| 成人不卡免费av| 国产伦精一区二区三区| 麻豆精品视频在线| 日韩av在线发布| 性久久久久久久久| 亚洲午夜一区二区| 亚洲综合一二三区| 一区二区三区成人在线视频| 亚洲精品高清在线| 日韩理论片在线| 亚洲色图欧洲色图|