大年夜中型企業(yè)有相昔時夜部門都在利用Windows Server和.Net架構(gòu)來構(gòu)建企業(yè)Web辦事和利用,是以Web辦事和Web利用法度凡是被ASP.NET和IIS主管。呵護Web辦事和Web應(yīng) 用法度是一個建設(shè)環(huán)境的標(biāo)題問題而不是編程標(biāo)題問題。例如,利用SSL/TLS經(jīng)由過程加密來確保保密性是最好的實現(xiàn)編制。為你的利用法度激活它,簡單的編制是對 IIS進行得當(dāng)?shù)慕ㄔO(shè),然后利用前綴為https的URL進行拜候。
ASP.NET安然性的建設(shè)首要觸及到編纂一個分級的XML文檔調(diào)集。在這棵樹的頂部是machine.config,此中運行在這臺機械上的用于所有 ASP.NET利用法度的全局設(shè)置被擬定好。在全局建設(shè)文件的下面是web.config文件,它包含了每個伶仃的ASP.NET利用法度的設(shè)置。本文將 會商如安在這些文件中建設(shè)CAS、身份認(rèn)證、假充和授權(quán)等方面,來包管Web辦事安然運行。
1、為ASP.NET建設(shè)CAS
雖然CAS首要作為呵護系統(tǒng)客戶端免受歹意移動代碼侵?jǐn)_的一種編制,但它與Web辦事和Web利用法度在辦事器端的擺設(shè)仍有一些聯(lián)系關(guān)系。例如,一臺辦事器可 能主管不止一個的個別,集體和組織授權(quán)的ASP.NET利用法度;在這類環(huán)境下,CAS有助于削減由一個實體具有的利用法度被別的一個實體具有的利用法度 干擾的風(fēng)險,也有助于被辦事器把持系統(tǒng)干擾的風(fēng)險。
可是,你應(yīng)當(dāng)寄望到:在默許環(huán)境下,CAS策略授予ASP.NET利用法度一套完全的法度集。因為他們從本地機械上運行。很明顯,當(dāng)建設(shè)你的利用法度時, 你應(yīng)當(dāng)批改這一點。.NET框架定義了良多不合的信賴級別:Full, High, Medium, Low和 Minimal,你可以用他們來肯定ASP.NET利用法度的特權(quán)授予。除這些策略中的第一種在建設(shè)文件 web_hightrust.config, web_mediumtrust.config等中被指定,其他所有策略位于.NET框架根目次下的建設(shè)子目次。為了給一個特別的ASP.NET利用法度 授權(quán)一個medium信賴等第,你必需給它的web.config文件以下的布局:
2、以最小特權(quán)運行
措置單個ASP.NET要求的“工作過程”運行在賬戶為ASPNET的Windows環(huán)境中。這個特別的賬戶有一個受限的Windows 特權(quán)集,為了節(jié)制這類侵害,應(yīng)當(dāng)讓給ASP.NET利用法度。可是,對工作過程來講,在與IIS不異的賬戶——SYSTEM賬戶下履行是可能的。假定你 想要這類環(huán)境產(chǎn)生,你編寫的machine.config文件應(yīng)當(dāng)像如許:
為了讓如許的更改生效,必需重啟IIS治理辦事和WWW發(fā)布辦事。
如許做的一個啟事多是:為了獲得Windows用戶用于假充目標(biāo)的拜候令牌,承諾你的ASP.NET代碼從Win32 API中調(diào)用LogonUser??墒牵@背反了最低權(quán)限(least privilege)的根基安然原則,和較著增加了成功報復(fù)打擊所引發(fā)的侵害。是以在那樣做之前你應(yīng)當(dāng)細心考慮。
3、身份認(rèn)證
ASP.NET供給了四中典型的身份認(rèn)證:None,Windows,Forms和Passport。每種認(rèn)證都是在利用法度的根文件 web.config中建設(shè)的。例如,為了完全禁用ASP.NET身份認(rèn)證——合適于不需要用戶登錄的公共網(wǎng)站,那么你需要如許的一個建設(shè)文件:
你應(yīng)當(dāng)服膺IIS身份認(rèn)證和ASP.NET身份認(rèn)證之間的彼此感化。二者都將需要被準(zhǔn)確地建設(shè),以達到預(yù)期的結(jié)果。凡是環(huán)境下,你會在IIS和 ASP.NET二者當(dāng)中中利用Windows身份認(rèn)證模式;或在IIS中和在ASP.NET中的None,Forms,Passport的某一種利用 匿名模式。
在IIS和ASP.NET二者中利用Windows身份認(rèn)證的長處是:暗碼不消經(jīng)由過程收集發(fā)送,而是客戶端利用法度向IIS供給了當(dāng)前登錄用戶身份的相干信 息,那使得這些信息轉(zhuǎn)發(fā)到你的ASP.NET利用法度上。這類編制的錯誤謬誤是:它依托于客戶端和辦事器端的Windows把持系統(tǒng)。Forms式的身份認(rèn)證 對基于互聯(lián)網(wǎng)的系統(tǒng)是一種更合適的編制,可是在這類環(huán)境下,利用SSL/TLS來確保用戶供給的憑證是加密的,這很是有需要。
4、假充
不管Windows身份認(rèn)證是不是已選擇,ASP.NET身份認(rèn)證沒有指明ASP.NET利用法度運行下的用戶環(huán)境。假定你想要你的利用法度在肆意賬號,而不但僅是ASPNET賬號的環(huán)境中運行,你必需要假充身份。
假定要求的用戶已被IIS許可為有效的Windows用戶,這是由以下web.config中的內(nèi)容完成的:
這將導(dǎo)致ASP.NET利用法度假充發(fā)出要求的用戶。但是,假定IIS設(shè)置為匿名身份認(rèn)證,那么在IIS中,ASP.NET利用法度假充肆意一個用戶賬號,這些賬號已被建設(shè)為匿名拜候。
假定你想要你的ASP.NET利用法度假充特定的用戶,這是很簡單的:
在此很較著的危險就是:在web.config頂用戶憑證以明文情勢存在。避免該危險是可能的,我們經(jīng)由過程在注冊表中存儲加密的用戶憑證,并且從web.config的
userName="registry:HKLMSoftwareMyAppAspNet,Name", password="registry:HKLMSoftwareMyAppAspNet,Password"/> 這個合用的aspnet_setreg.exe必需被用于加密用戶憑證和在注冊表中存儲加密的用戶憑證。 5、授權(quán) 當(dāng)你在ASP.NET中利用Windows授權(quán)時,為了拜候一個給定的資本,被授權(quán)的用戶必需有需要的NTFS權(quán)限。這被稱為文件授權(quán)(file authorization)。ASP.NET撐持其他的更具矯捷性的授權(quán)類型,這被稱為URL授權(quán)(URL authorization)。不像文件授權(quán),這是經(jīng)由過程利用法度的web.config文件來建設(shè)的。它主如果基于經(jīng)由過程對ASP.NET身份認(rèn)證來對利用 法度進行分派;而不是基于一個顛末許可的Windows賬戶的權(quán)限上。一個簡單URL授權(quán)建設(shè)的例子以下: 這個例子承諾用戶Fred和Joe將HTTP GET要求提交到利用法度,以求得由web.config文件治理的網(wǎng)站中的肆意資本??墒侨艚?jīng)由過程HTTP POST要求,就會拒盡他們拜候這些資本。擔(dān)負開辟者角色的肆意人(除Fred或 Joe)是承諾無限制的拜候該網(wǎng)站的,可是其他所有效戶被拒盡拜候任何資本。這些元素的挨次很是首要,因為第一個匹配將是ASP.NET會利用到的。