Microsoft .NET Framework是什么軟件啊?
來(lái)源:新能源網(wǎng)
時(shí)間:2024-08-17 12:05:56
熱度:
Microsoft .NET Framework是什么軟件啊?【專家解說(shuō)】:Microsoft .NET framework安全概述 本文概述了微軟.NET framework安全
【專家解說(shuō)】:Microsoft .NET framework安全概述
本文概述了微軟.NET framework安全結(jié)構(gòu),包括基于證據(jù)的安全,基于角色的安全,認(rèn)證和授權(quán)的概念,以及隔離存儲(chǔ),密碼加密和擴(kuò)展性。本文還概述了.NET framework安全策略帶給開發(fā)人員,管理員和最終用戶的主要好處。本文假定讀者已經(jīng)基本熟悉了.NET framework通用語(yǔ)言運(yùn)行時(shí)和管理代碼的概念。
引言
目前的安全問(wèn)題
在今天的軟件環(huán)境中,應(yīng)用程序的來(lái)源很多,它們執(zhí)行很多任務(wù)。對(duì)應(yīng)用程序代碼的信任是一個(gè)主要需求,因?yàn)槲覀冋l(shuí)也不想軟件或信息遭到破壞。給予許可的安全策略不會(huì)允許對(duì)敏感信息的不適當(dāng)?shù)脑L問(wèn),或?qū)⒈镜貦C(jī)器暴露給惡意的程序或甚至是有平常錯(cuò)誤的代碼。
過(guò)去,安全結(jié)構(gòu)提供了基于用戶帳號(hào)的隔離和訪問(wèn)控制--在這些限制內(nèi)給予代碼完全訪問(wèn)權(quán),并假定由特定用戶可運(yùn)行的代碼具有相同的信任度。不幸的是,如果所有程序都代表某用戶運(yùn)行,根據(jù)用戶對(duì)代碼的隔離對(duì)于保護(hù)一個(gè)程序不被其它用戶使用是不夠的。另一種情況,不能被完全信任的代碼經(jīng)常被轉(zhuǎn)移到"沙箱"模型中執(zhí)行,在此代碼運(yùn)行于隔離環(huán)境,而不會(huì)訪問(wèn)大部分的服務(wù)。
對(duì)今天應(yīng)用程序的成功的安全解決方案必須能強(qiáng)化兩個(gè)安全模型間的平衡。它必須提供對(duì)資源的訪問(wèn),以便以完成有用的工作,它需要對(duì)應(yīng)用程序的安全性作細(xì)致的控制以確保代碼被識(shí)別,檢測(cè),并給予合適的安全級(jí)別。.NET framework就提供了一個(gè)這樣的安全模型。
Microsoft .NET framework安全解決方案
.NET framework安全解決方案基于管理代碼的概念,以及由通用語(yǔ)言運(yùn)行時(shí)(CLR)加強(qiáng)的安全規(guī)則。大部分管理代碼需要進(jìn)行驗(yàn)證以確保類型安全及預(yù)先定義好的其它屬性的行為的安全。例如,在驗(yàn)證的代碼中,聲明為接收4字節(jié)值的訪問(wèn)將拒絕提供8字節(jié)參數(shù)的調(diào)用,因?yàn)椴皇穷愋桶踩?。?yàn)證過(guò)程還確保了執(zhí)行流只傳送到已知的位置,如方法入口點(diǎn)--這個(gè)過(guò)程去除了跳轉(zhuǎn)到任意位置執(zhí)行的能力。
驗(yàn)證將阻止不是類型安全的代碼執(zhí)行,在它們引起破壞前捕獲很多常見的編程錯(cuò)誤。通常的弱點(diǎn)--如緩存溢出,對(duì)任意內(nèi)存或沒有初始化的內(nèi)存的讀取,對(duì)控件的隨意傳送--都不再可能出現(xiàn)。這將使最終用戶受益,因?yàn)樵谒麄儓?zhí)行代碼前對(duì)其進(jìn)行檢查。這也有益于開發(fā)人員,他們會(huì)發(fā)現(xiàn)很多常見錯(cuò)誤(過(guò)去一直在困繞前開發(fā))現(xiàn)在可以查明,并能阻止它們引起破壞。
CLR也能使非管理代碼運(yùn)行,但非管理代碼不能從這些安全措施中受益。特殊的許可與對(duì)非管理代碼的調(diào)用能力相關(guān),一個(gè)強(qiáng)大的安全策略能確保這些許可被恰當(dāng)?shù)亟o予。經(jīng)過(guò)很長(zhǎng)時(shí)間后,非管理代碼到管理代碼的移植將減少對(duì)非管理代碼的調(diào)用頻率。
微軟.NET framework安全機(jī)制的構(gòu)件
基于證據(jù)的安全
.NET framework引入了"基于證據(jù)的安全"的概念。在本質(zhì)上,它是對(duì)安全策略暴露出來(lái)問(wèn)題的解答:
· 組合從哪個(gè)站點(diǎn)獲得?
組合是.NET framework應(yīng)用程序的構(gòu)件。它們組成了部署,版本控制,重用,激活作用域,安全認(rèn)證的基本單元。應(yīng)用程序的組合是從網(wǎng)站上下載到客戶端的。
· 組合是從哪個(gè)URL獲得的?
安全策略需要明確的地址,而組合是從這個(gè)地址下載的。
· 組合是從哪個(gè)區(qū)獲得的?
區(qū)是基于代碼的位置,對(duì)安全標(biāo)準(zhǔn),如 Internet, intranet和本機(jī)等等,的描述。
· 組合的強(qiáng)名(strong name)是什么?
強(qiáng)名是由組合的創(chuàng)建者提供了密碼強(qiáng)化后的標(biāo)識(shí)符。盡管它沒有提供對(duì)創(chuàng)建者的任何證明,但它唯一標(biāo)識(shí)了組合,確保了組合沒有被破壞過(guò)。
根據(jù)對(duì)這些問(wèn)題的回答,及其它證據(jù),安全策略可以對(duì)賦予組合垢合適許可進(jìn)行計(jì)算。從多種來(lái)源可以得到證據(jù),包括CLR,瀏覽器,微軟ASP.NET,及外殼--這依賴于代碼的來(lái)源。
策略驅(qū)動(dòng)的信任模型使用代碼證據(jù)
當(dāng)組合被調(diào)入內(nèi)存進(jìn),CLR策略系統(tǒng)通過(guò)收集組合的證據(jù)并在策略環(huán)境中對(duì)證據(jù)進(jìn)行計(jì)算,從而決定賦予組合什么樣的許可權(quán)。CLR策略系統(tǒng)然后根據(jù)評(píng)估過(guò)的證據(jù)和組合作出的許可請(qǐng)求給予組合一組許可。只有在組合被給予了一組最少的許可后,或組合根本不需要許可權(quán),組合的創(chuàng)建者才能知道組合正確運(yùn)行。通過(guò)一個(gè)或多個(gè)對(duì)特定許可的請(qǐng)求,這樣的附加需求可以被傳送室策略系統(tǒng)。
根據(jù)許可請(qǐng)求的類型,策略系統(tǒng)可以進(jìn)一步限制給予組合的許可(刪除不必要的許可)或甚至拒絕將組合裝入內(nèi)存(如果運(yùn)行組合所需的最小許可沒有被策略給予)。在不存在任何許可請(qǐng)求的情況下,組合永遠(yuǎn)不會(huì)被給予多于策略系統(tǒng)將會(huì)給予的許可權(quán)限,請(qǐng)求只是進(jìn)一步限制得到的許可。
安全策略包含了許多代碼組,這些組包含了根據(jù)證據(jù)應(yīng)給予的許可權(quán)。代碼組描述的許可可提供給從特定的安全區(qū)域獲得的組合,或提供給由特定發(fā)行商簽名過(guò)的組合,等等。盡管隨CLR發(fā)行了一組默認(rèn)的代碼組(及相關(guān)許可),但管理員可以對(duì)這些CLR安全的進(jìn)行定置,以適合他們的特殊需求。記住,通過(guò)定義與證據(jù)相關(guān)的代碼組,任何東西都可以作為證據(jù)提交,只要安全策略可以使用它。
創(chuàng)建許可的的過(guò)程涉及到對(duì)證據(jù)的評(píng)估,以確定代碼組適用于哪個(gè)等級(jí):企業(yè),機(jī)器,和用戶。策略按上面順序?qū)@三個(gè)等級(jí)進(jìn)行評(píng)估,然后創(chuàng)建交插了三個(gè)等級(jí)的許可設(shè)置。管理員可以將任何一個(gè)策略等級(jí)標(biāo)記為終結(jié)(final),這樣做應(yīng)付阻止在其它等級(jí)上對(duì)策略做進(jìn)一步評(píng)估。例如,管理員可以在機(jī)器級(jí)別上對(duì)組合終止策略,這樣就會(huì)阻止用戶級(jí)策略對(duì)該組合的應(yīng)用。
一旦策略完成,許可的最初設(shè)置也就創(chuàng)建了。組合通過(guò)從三個(gè)方面做出特定的請(qǐng)求可以優(yōu)化這些許可:
· 第一方面是指定為了使組合運(yùn)行它必須擁有的最小許可設(shè)置。如果這些許可沒有給予,那么組合將不同調(diào)入到內(nèi)存,并拋出例外。
· 第二,可以指定一組可選的許可。盡管組合希望存在這些許可,但如果無(wú)法獲得這些許可,它仍可以調(diào)入到內(nèi)存。
· 最后,行為特別好的組合實(shí)際上會(huì)拒絕它們所不需的有風(fēng)險(xiǎn)的許可。這三個(gè)優(yōu)化選項(xiàng)是調(diào)入時(shí)作為聲明語(yǔ)句實(shí)現(xiàn)的。
在運(yùn)行時(shí),許可是根據(jù)代碼的執(zhí)行計(jì)算的。右側(cè)的圖總結(jié)了這個(gè)過(guò)程的發(fā)生順序。組合A3將它的證據(jù)和來(lái)自主機(jī)的證據(jù)提供給策略評(píng)估器。策略評(píng)估器在創(chuàng)建許可時(shí)也要考慮從組合得到的許可請(qǐng)求,"G3"。組合A3由組合A2調(diào)用,而A2又是由組合A1調(diào)用的。當(dāng)組合A3執(zhí)行一個(gè)引發(fā)安全檢查的操作時(shí),A2和 A1獲得的許可同樣也要進(jìn)行檢查,以確保它們擁有A3所請(qǐng)求的許可權(quán)限。在這個(gè)過(guò)程中,此過(guò)程稱為堆棧遍歷(walking),堆棧中每個(gè)組合的許可權(quán)限都要進(jìn)行檢查以確定所給予的權(quán)限設(shè)置是否包含安全檢查所需要的許可。如果堆棧中的每個(gè)組合被給予了安全檢查所需要的許可,調(diào)用將成功。如何任何組合沒有給予所需要的許可,堆棧遍歷過(guò)程失敗,安全例外將被拋出。
圖 1.主機(jī)和組合為策略評(píng)估器提供證據(jù),評(píng)估器使用安全策略和許可請(qǐng)求確定組合的許可權(quán)限。應(yīng)用程序中不同運(yùn)行組件的許可權(quán)限然后用于作出授權(quán)決定。
代碼訪問(wèn)安全堆棧遍歷可以保護(hù)代碼不受攻擊。在精通的攻擊中,惡意代碼欺騙受信任代碼執(zhí)行它獨(dú)自不能運(yùn)行的操作--有效地利用代碼的許可權(quán)限實(shí)現(xiàn)惡意的目的。對(duì)這類攻擊,開發(fā)人員很難進(jìn)行防備--但堆棧遍歷確保了如果涉及到了低級(jí)信任等級(jí)的代碼,有效許可將被減少到信任等級(jí)最低的代碼具有的許可。
結(jié)果,代碼將從源處獲得不同的信任等級(jí),并在適合于特定的代碼執(zhí)行環(huán)境的限制下運(yùn)行。
.NET framework調(diào)用的"自由"安全性
一些活動(dòng),如讀寫文件,顯示對(duì)話框,讀寫環(huán)境變量,可以通過(guò)包含在框架安全構(gòu)架中的.NET framework方法實(shí)現(xiàn)。這就使.NET framework能根據(jù)安全策略允許或不允許一個(gè)操作,而不需要程序員做額外的工作。盡管暴露了保護(hù)資源的管理類的創(chuàng)建者在他們的庫(kù)中做了明確的安全需求,使用.NET framework類庫(kù)訪問(wèn)受保護(hù)資源的開發(fā)人員可以自由地利用代碼訪問(wèn)安全系統(tǒng);他們不必作出明確的安全調(diào)用。
管理員可以通過(guò)決定給予哪些許可來(lái)優(yōu)化安全策略,然后,依靠.NET framework處理所有的安全操作。代碼訪問(wèn)安全能阻止大部分的惡意攻擊,對(duì)代碼的驗(yàn)證減少了緩存溢出和其它會(huì)導(dǎo)致安全攻擊的不期望的行為。因此,應(yīng)用程序和組件生來(lái)就受到了保護(hù),它們免于大多數(shù)安全問(wèn)題的沖擊,而這些安全問(wèn)題一直困繞著本地代碼的實(shí)現(xiàn)。
基于角色的安全
有時(shí)根據(jù)已認(rèn)證的身份或根據(jù)與代碼執(zhí)行上下文相關(guān)的角色作出認(rèn)證決定是合適的。例如,金融和企業(yè)軟件可以通過(guò)評(píng)估角色信息的企業(yè)邏輯加強(qiáng)策略。根據(jù)作出請(qǐng)求的用戶角色可以對(duì)金融交易的數(shù)據(jù)進(jìn)行限制。出納被允許可以處理一定金額的請(qǐng)求,而多于該金額的所有工作需要監(jiān)督人的角色來(lái)處理。
身份可以映射到登錄系統(tǒng)的用戶,或由應(yīng)用程序定義。相應(yīng)的原則封裝了身份和其它相關(guān)的角色信息(例如,但并不限于此,用戶的"組"由操作系統(tǒng)定義)。
認(rèn)證和授權(quán)
認(rèn)證是一個(gè)過(guò)程,它接收來(lái)自用戶的證書,并對(duì)證書的授權(quán)進(jìn)行確認(rèn)。如果證書是有效的,那么用戶就可以說(shuō)他擁有已認(rèn)證的身份。而授權(quán)的過(guò)程是:確定認(rèn)證用戶是否能夠訪問(wèn)給定的資源。認(rèn)證可通過(guò)系統(tǒng)或企業(yè)邏輯來(lái)完成,通過(guò)某個(gè)API它是或獲得的。認(rèn)證API是完全可擴(kuò)展的,因此開發(fā)人員根據(jù)需要使用自己的企業(yè)邏輯。開發(fā)人員可以對(duì)他們的認(rèn)證需求進(jìn)行編碼,也可以修改底層的認(rèn)證方法而無(wú)需對(duì)他們的代碼作太大變化。除了微軟Windows?操作系統(tǒng)身份認(rèn)證外,還有的認(rèn)證方法包括基本HTTP,摘要和 Kerberos,以及微軟Passport和基于窗體的認(rèn)證。這些認(rèn)證方法已經(jīng)完全集成到ASP.NET中了。
在ASP.NET窗體認(rèn)證中,用戶提供證書,并提交窗體。如果應(yīng)用程序簦別請(qǐng)求,系統(tǒng)發(fā)送一個(gè)cookie ,該cookie以某種形式包含包含了證書或包含重新獲得身份的關(guān)鍵字。接下來(lái)發(fā)送的請(qǐng)求在頭中包含了cookie,ASP.NET處理程序通過(guò)應(yīng)用程序所期望的任何有效方法對(duì)這些請(qǐng)求認(rèn)證和授權(quán)。如果請(qǐng)求沒有經(jīng)過(guò)認(rèn)證,HTTP客戶端將用于把請(qǐng)求發(fā)送到認(rèn)證窗體,在那里用戶可能提供信任證書。窗體認(rèn)證有時(shí)用于個(gè)性化--為已知用戶的內(nèi)容進(jìn)行定置。在一些情況下,身份是問(wèn)題所在而不是認(rèn)證,因此用戶的個(gè)性化信息可以簡(jiǎn)單地通過(guò)訪問(wèn)用戶或獲得。
授權(quán)的目的是確定作出請(qǐng)求的身份是否被給予了對(duì)給定資源的訪問(wèn)權(quán)。ASP.NET提供了兩種類型的授權(quán)服務(wù):文件授權(quán)和URL授權(quán)。文件授權(quán)根據(jù)正在作用的方法和作出請(qǐng)求的身份決定用戶使用于哪個(gè)訪問(wèn)控制列表。URL授權(quán)是URI名稱空間和不同用戶或角色間的邏輯映射。
隔離存儲(chǔ)
.NET framework提供了一個(gè)特殊的功能,隔離存儲(chǔ),用于存儲(chǔ)數(shù)據(jù),甚至是當(dāng)不允許對(duì)文件進(jìn)行訪問(wèn)時(shí)--例如,當(dāng)從Internet下載了一個(gè)管理控件,并運(yùn)行它,為它提供了有限的許可權(quán)但沒有權(quán)力讀寫文件。
隔離存儲(chǔ)是一組新的用于.NET支持的用于本地存儲(chǔ)的類型和方法。在本質(zhì)上,每個(gè)組合可以訪問(wèn)磁盤上一斷被隔離的存儲(chǔ)空間。它不允許訪問(wèn)其它數(shù)據(jù),隔離存儲(chǔ)只對(duì)為它創(chuàng)建的組合有效。
隔離存儲(chǔ)也可被應(yīng)用程序用于保存活動(dòng)記錄,保存設(shè)置,或者將狀態(tài)數(shù)據(jù)保存到磁盤上以備將來(lái)之用。因?yàn)楦綦x存儲(chǔ)的位置是預(yù)先決定好的,所以隔離存儲(chǔ)為指定唯一存儲(chǔ)空間提供了一種方便的方式,而不需要決定文件路徑。
從本地企業(yè)局域網(wǎng)獲得的代碼具有相似的限制,但更少,它可以訪問(wèn)大限額的隔離存儲(chǔ)。最后,從受限站點(diǎn)區(qū)域(不信任站點(diǎn))來(lái)的代碼沒有對(duì)隔離存儲(chǔ)的訪問(wèn)權(quán)。
加密
.NET framework提供了一組加密對(duì)象,它們支持加密算法、數(shù)字簽名、散列、生成隨機(jī)數(shù),是通過(guò)眾所周知的運(yùn)算法則實(shí)現(xiàn)的,如RSA, DSA, Rijndael/AES, Triple DES, DES, 和 RC2, 以及MD5, SHA1, SHA-256, SHA-384 和 SHA-512散列算法。同時(shí)還支持在IETF和W3C開發(fā)的XML數(shù)字簽名規(guī)范。.NET framework使用加密對(duì)象支持內(nèi)部服務(wù)。這些對(duì)象還作為管理代碼提供給需要加密支持的開發(fā)人員。
如何指定安全性?
如果要對(duì)組合運(yùn)行時(shí)的行為進(jìn)行修改,根據(jù)程序員的需要,可以作出聲明式安全或強(qiáng)迫式安全的修改。
聲明式安全
聲明式安全使程序員可以直接在組合代碼的元數(shù)據(jù)中為組合指定安全需求。許可請(qǐng)求和所有其它形式的聲明式安全是在代碼中是作為定置屬性指定的。類,屬性和方法的注釋用于優(yōu)化許可。例如,聲明式安全可用于類的調(diào)用者在調(diào)用方法前檢查調(diào)用者是否被已知地行商簽名過(guò),或有一個(gè)特定的強(qiáng)名。
由于聲明屬性是組合元數(shù)據(jù)的一部分,所以組合的安全需求易于辨別。可以使用工具對(duì)組合進(jìn)行掃描,以發(fā)現(xiàn)哪些方法需要某些許可,哪些方法斷言了某些許可。
當(dāng)被請(qǐng)求的活動(dòng)和許可在編譯時(shí)是知道時(shí),聲明式檢查可作為選擇的解決方案之一。例如,如果方法總是檢查對(duì)C:\temp的寫訪問(wèn)許可,那么許可檢查就會(huì)從聲明中得到好處。另一方面,如果被請(qǐng)求的具有訪問(wèn)權(quán)的位置發(fā)生了變化,那么強(qiáng)迫式安全也許是一個(gè)比較好的解決方案。
強(qiáng)迫式安全
強(qiáng)迫式安全直接在代碼中實(shí)現(xiàn)。程序員通過(guò)程序采取安全活動(dòng),并且根據(jù)安全堆棧的狀態(tài)決定是給予還是拒絕許可。例如,當(dāng)一個(gè)方法請(qǐng)求訪問(wèn)一個(gè)特定的文件時(shí),如果調(diào)用者(或方法的任何一個(gè)調(diào)用者)沒有被給予必需的許可權(quán)限,那么請(qǐng)求失敗。因?yàn)閺?qiáng)迫式安全是通過(guò)程序?qū)崿F(xiàn)的,所以滿足了動(dòng)態(tài)需求。如果你需要對(duì)一個(gè)特定文件的訪問(wèn)許可,但該許可還要根據(jù)其它信息發(fā)生變化,那么,強(qiáng)迫式安全就是可選的解決方案。
總結(jié)
. NET framework安全迎合了這種事實(shí):軟件向多樣化的移動(dòng)組件發(fā)發(fā)展,并根據(jù)這種事實(shí)提供保護(hù)。在一個(gè)細(xì)化的、可擴(kuò)展的策略和許可系統(tǒng)下,用戶能夠運(yùn)行功能強(qiáng)大的代碼,而同時(shí)減少相關(guān)的風(fēng)險(xiǎn)。在沒有運(yùn)行時(shí)對(duì)用戶作出信任決定時(shí),管理員可以在各個(gè)級(jí)別創(chuàng)建強(qiáng)壯的安全策略。策略是完全可定置的。開發(fā)人員能夠集中解決應(yīng)用程序邏輯,而不用關(guān)心核心的安全問(wèn)題(它由CLR透明地處理)。然而,開發(fā)人員可以在任何時(shí)候擴(kuò)展安全模型。
熱門標(biāo)簽:關(guān)鍵詞
-
“綠色、環(huán)保、低碳”是當(dāng)今世界的關(guān)鍵詞,“低碳”要求我...2024-08-17
-
【關(guān)鍵詞】:磁性材料、順磁性、抗磁性、磁疇、鐵磁性、反鐵磁性、亞鐵磁性、永磁材料2024-08-17
-
【關(guān)鍵詞】:磁性材料、順磁性、抗磁性、磁疇、鐵磁性、反鐵磁性、亞鐵磁性、永磁材料2024-08-17
-
【關(guān)鍵詞】:磁性材料、順磁性、抗磁性、磁疇、鐵磁性、反鐵磁性、亞鐵磁性、永磁材料2024-08-17
-
【關(guān)鍵詞】:磁性材料、順磁性、抗磁性、磁疇、鐵磁性、反鐵磁性、亞鐵磁性、永磁材料2024-08-17
-
【關(guān)鍵詞】:磁性材料、順磁性、抗磁性、磁疇、鐵磁性、反鐵磁性、亞鐵磁性、永磁材料2024-08-17
-
工裝-工服-職業(yè)裝-制服怎么搜索這幾個(gè)關(guān)鍵詞,就能搜出朗杰瑞服裝公司呢?2024-08-17
-
朗杰瑞制服 北京制服 北京職業(yè)裝 工服 工裝?我選哪個(gè)關(guān)鍵詞好呢?2024-08-17
-
評(píng)析中國(guó)改革開放30年的經(jīng)驗(yàn)與教訓(xùn)的論文 要求3000字左右,有摘要,有關(guān)鍵詞2024-08-17
-
“綠色、環(huán)保、低碳”是當(dāng)今世界的關(guān)鍵詞,“低碳”要求我們節(jié)約及高效利用能源.關(guān)于能源與能量,下列說(shuō)2024-08-17
-
收集關(guān)于核能和核電的內(nèi)短文 關(guān)鍵詞有 裂變反應(yīng) 反應(yīng)堆 放射性 短文可以涉及相關(guān)的社會(huì) 歷史 地理知識(shí)2024-08-17
-
別的國(guó)家如何低碳,給點(diǎn)關(guān)鍵詞都行,有具體事例更好2024-08-17
-
低碳、節(jié)能是2012年的關(guān)鍵詞。要讓“低碳”成為全民概...2024-08-17
-
“綠色、環(huán)保、低碳”是當(dāng)今世界的關(guān)鍵詞,“低碳”要求我...2024-08-17
-
新建的新能源行業(yè)網(wǎng)站如何優(yōu)化關(guān)鍵詞2024-08-17