六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]解決方案  將FSO組件和刪除或改名的方式我們不再過多的加以說明了,這一類的解決方法網絡上已經有很多文章介紹了�! ×硗膺€有一種關于ASP的FSO組件漏洞的相應解決方案,即根據用戶設置權限。在IIS里,可以設置每個站點的匿名訪問所使用的帳號,默認為IUSR_ HostName,這一方法的原理就是針...
解決方案

  將FSO組件和刪除或改名的方式我們不再過多的加以說明了,這一類的解決方法網絡上已經有很多文章介紹了。

  另外還有一種關于ASP的FSO組件漏洞的相應解決方案,即根據用戶設置權限。在IIS里,可以設置每個站點的匿名訪問所使用的帳號,默認為IUSR_ HostName,這一方法的原理就是針對每一個共享主機用戶分別設置一個Windows帳號,如IUSR_HostName1,IUSR_ HostName 2等,然后將每一個用戶限制在各自的Web目錄下。


  我們仔細的研究一下這種方案,可以發現這個方案無法真正實現安全。因為系統運行ASP時并不是使用的IUSR_ HostName帳號,而是IWAM_ HostName帳號,就象在ASP.NET中使用的用戶ASPNET一樣。也就是說每個ASP程序所擁有的權限并不是IUSR_ HostName的權限,而是IWAM_HostName用戶的權限。這樣的方法無法真正的將每個共享主機用戶的文件系統訪問權限限制在各自的虛擬站點中,每個用戶仍然可以訪問別人的代碼。所以這種方法在ASP.NET中無法真正實現用戶之間的安全性。

  在ASP.NET中相應的運行ASP.NET程序的帳號為ASPNET,和上面所說的ASP中的解決方案類似,我們只能限制此用戶不能訪問系統目錄等其他目錄,但是無法防止用戶訪問其他共享主機用戶的程序代碼,無法從根本上杜絕這種問題。

  那么,有沒有真正的解決方案了呢?

  有!這就是.NET Framework 的新特性――代碼訪問安全性

  為了更好的理解這一問題的解決方法,我們需要先介紹一下.NET Framework的安全機制。然后再結合我們的實際問題來討論解決方案。

  為了解決安全問題,.NET Framework提供了一種稱為代碼訪問安全性的安全機制。代碼訪問安全性允許根據代碼的來源和代碼的標識等屬性將代碼設置為不同級別的信任代碼,同時還詳細定義了不同級別的對代碼的信任,從而可以詳細的對代碼設置各自的權限而不是將最大權限賦給所有的代碼。使用代碼訪問安全性,可以減小惡意代碼或各種錯誤的代碼帶來的嚴重的系統安全性問題的可能性。您可以設置允許代碼執行的一組操作,同樣可以設置永遠不允許代碼執行的一組操作。

  實現代碼訪問安全性的基礎就是JIT(運行時編譯)和IL(中間代碼)。所以所有以公共語言運行庫為目標的托管代碼都會受益于代碼訪問安全性。非托管代碼則無法完全使用代碼訪問安全性。


下面我們將介紹一下代碼訪問安全性實現的各種功能:

  代碼訪問安全性是控制代碼對受保護資源和操作的訪問權限的一種機制。在 .NET Framework中,代碼訪問安全性執行下列功能:

  · 定義權限和權限集,它們表示訪問各種系統資源的權限。

  · 使管理員能夠通過將權限集與代碼組關聯來配置安全策略。

  · 使代碼能夠請求運行所需權限以及其他一些有用的權限,以及指定代碼絕對不能擁有哪些權限。

  · 根據代碼請求的權限和安全策略允許的操作,向加載的每個程序集授予權限。

  · 使代碼能夠要求其調用方擁有特定的權限。

  · 使代碼能夠要求其調用方擁有數字簽名,從而只允許特定組織或特定站點的調用方來調用受保護的代碼。

  · 通過將調用堆棧上每個調用方所授予的權限與調用方必須擁有的權限相比較,加強運行時對代碼的限制。

  為了確定是否已授予代碼相應的權限,.NET運行庫的安全系統將遍歷整個調用堆棧,將每個調用方所授予的權限與目前要求的權限相比較。如果調用堆棧中的任何調用方沒有要求的權限,則會引發安全性異常,并會拒絕訪問和相應的操作。堆棧步旨在防止引誘攻擊;在這種攻擊中,受信程度較低的代碼調用高度信任的代碼,并使用高度信任的代碼執行未經授權的操作。在運行時要求所有調用方都擁有權限將影響性能,但對防止代碼遭受攻擊至關重要。若要優化性能,可以使代碼執行較少的堆棧步;但是,任何時候這樣做時均必須確保不會暴露安全缺陷。

  還存在另外一種代碼訪問安全性的常見用途,即應用程序將控件從網絡 Web 站點直接下載到客戶端,這種方式的代碼安全性也是可以在客戶端進行設置的,根據簽名等數據權限證書來確定是不是可以允許下載的控件運行。這種方法類似于ActiveX的安全性設置,但是比之在設置權限更加詳細和強大。同JAVA APPLET的沙箱安全機制相比,.NET 的客戶端控件可以在本地簡單設置后訪問客戶端的各種資源。由于這一方面的用途不是我們的重點,所以我們在這里就不再更詳細的討論其用途及其實現原理了。

  下面我們就談談如何應用這一安全特性來解決ASP.NET中存在的系統安全漏洞。由于我們介紹的系統是共享主機,所以有其特殊性,即系統管理員無法事先給所有的代碼賦予相應的權限,因為每個用戶都可能有各種權限要求,并且這些要求特殊權力的代碼在使用中都可能出現的,所以在權限管理上隨時都有各種要求。
因此在權限設置方面,不僅僅是管理員設置,也包括了各個共享主機用戶的權限請求,這也正是安全代碼機制的一個重要部分。

  請求權限是您讓運行庫知道代碼執行有哪些操作權限的方法。通過將屬性(聲明式語法)放到代碼的程序級范圍來為程序集請求權限。

  請求內置權限的代碼示例:


//The attribute is placed on the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, Name = "FullTrust")]

  將此段代碼放在程序的開始部分(namespace聲明之前),在編譯時就會將請求的權限存儲在程序集清單中。加載時,運行庫檢查權限請求,并應用安全策略規則來確定授予程序集哪些權限。

  雖然我們編寫的大部分代碼都沒有請求權限,其實不管是共享主機形式還是獨立服務器形式都應該請求權限,這是因為請求權限有助于確保只將代碼需要的權限授予代碼。如果沒有授予代碼額外權限,即使某些惡意代碼想利用您的代碼來進行安全性破壞,它也無法操作沒有賦給您自己代碼相應權限的額外系統資源。您只應該請求代碼需要的那些權限,而不應請求更多權限。

  代碼請求權限之后,系統管理員可以使用"權限查看"工具 (Permview.exe,位于您的.NET Framework的目錄的bin目錄下) 來檢查您的程序集并根據其他條件來設置安全策略以決定是否給您的代碼所請求的相應權限。如果您不顯式地在代碼中請求應用程序需要的權限,那么管理員將很難管理您的應用程序。在權限管理嚴格的主機上,將無法實現您的代碼所要求的功能。

  請求權限會通知運行庫應用程序正常運行需要哪些權限,或具體不需要哪些權限。在.NET Framework安裝后的默認狀態下,所有代碼都是FullTrust(完全信任)的。這時是不需要申請任何權限的,但是管理員一旦修改了代碼安全,我們使用的磁盤訪問就要受到限制了,這是就需要申請相應的權限了。我們上邊介紹的文件管理代碼就需要具有本地硬盤讀寫操作的能力,則應用程序必須擁有 FileIOPermission。如果代碼不請求 FileIOPermission,在本地安全設置不允許應用程序擁有此權限的主機上,在應用程序嘗試磁盤操作時就會引發安全性異常。即使應用程序能夠處理此異常,也不會允許它操作磁盤。當然,如果您的代碼不訪問受保護的資源或執行受保護的操作,則不必請求任何權限。例如,如果代碼只根據向它傳遞的輸入來計算結果而不使用任何資源,則不必請求權限。如果您的代碼訪問受保護的資源但未請求必要的權限,則仍可能允許它執行,但如果它嘗試訪問某種資源而它又沒有必要的權限,則可能在執行過程中失敗。




主站蜘蛛池模板: 亚洲精品第1页 | 日本不卡网| 天天夜夜人人 | 天天操天天射天天舔 | 欧美亚洲视频 | 手机在线观看亚洲国产精品 | 天天射影院 | 日在线视频 | 一级毛片黄片 | 色黄在线| 日本一区午夜爱爱 | 亚洲 日本 欧美 日韩精品 | 在线不卡视频 | 亚洲主播 | 日韩日韩日韩手机看片自拍 | 在线观看亚洲精品专区 | 新男人天堂| 天天色网站| 酥酥影院一级毛片在线看 | 天天色综合4| 天天爱天天插 | 亚洲乱码一二三四区乱码 | 青草视频网站 | 五福影院凹凸一区二区 | 中文在线免费不卡视频 | 日本在线一本 | 日本免费一二三区 | 亚洲精品老司机综合影院 | 婷婷六月久久综合丁香76 | 欧美亚洲视频在线观看 | 中国黄色毛片 大片 | 亚洲国产中文字幕 | 我看黄色一级片 | 日本欧美一级二级三级不卡 | 天天看片天天爽_免费播放 天天看片天天爽 | 日韩免费视频 | 一二三四免费观看高清动漫视频 | 小视频在线观看免费 | 亚洲精品福利 | 日本免费的一级v一片 | 亚洲视频自拍 |