前面好幾篇文章,老周都跟大伙伴們聊了跟應(yīng)用程序域有關(guān)的話題,干脆咱們一聊到底吧,做學(xué)問就應(yīng)該這樣,有恒心。
App Domain的創(chuàng)建新應(yīng)用程序域的方法中,有一個(gè)特殊的重載:
public static AppDomain CreateDomain(string friendlyName, Evidence securityInfo, AppDomainSetup info, PermissionSet grantSet, params StrongName[] fullTrustAssemblies);
這個(gè)重載比較特殊,它與咱們今天扯的話題接近,因?yàn)樗膮?shù)列表中有一個(gè)是 PermissionSet 類型的,它表示一個(gè)權(quán)限的集合,當(dāng)創(chuàng)建應(yīng)用程序域時(shí),通過這個(gè)權(quán)限集合,限制在新應(yīng)用程序域中執(zhí)行的代碼的權(quán)限。在各個(gè)CreateDomain方法的重載中,只有這個(gè)有設(shè)置權(quán)限集的參數(shù)。
運(yùn)用這個(gè)重載方法,可以將你覺得要限制權(quán)限的代碼放到這個(gè)新的應(yīng)用程序域中執(zhí)行,即創(chuàng)建一個(gè)“沙箱”。比如,你拿到別人寫的一個(gè)類庫A,不過你不知道這個(gè)類庫A在執(zhí)行過程中會(huì)干什么,于是,你希望在使用這個(gè)來路不明的類庫時(shí),可以限制一下它,例如不讓它讀寫文件,或者說只允許它訪問某些目錄和文件。
為了偷工減料,寫出豆腐渣程序,老周舉的這個(gè)例子,是把做測(cè)試用的代碼寫到主程序集中。它有一個(gè)類,類中有一個(gè)方法,調(diào)用之后,會(huì)在“文檔”庫中創(chuàng)建一個(gè)文件,然后寫入一些見不得人的內(nèi)容。
網(wǎng)友評(píng)論