使用Policy文件來設(shè)置Java的安全策略_第1頁(yè)
使用Policy文件來設(shè)置Java的安全策略_第2頁(yè)
使用Policy文件來設(shè)置Java的安全策略_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-眾所周知,Java語言具有完善的安全框架,從編程語言,編譯器、解釋程序到Java虛擬機(jī),都能確保Java系統(tǒng)不被無效的代碼或敵對(duì)的編譯器暗中破壞,基本上,它們保證了Java代碼按預(yù)定的規(guī)則運(yùn)作。但是,當(dāng)我們需要逾越這些限制時(shí),例如,讀寫文件,監(jiān)聽和讀寫Socket,退出Java系統(tǒng)等,就必須使用數(shù)字簽名或安全策略文件(*.Policy)。-在企業(yè)內(nèi)部網(wǎng)中,本文提出了使用安全策略文件來設(shè)置java程序權(quán)限的一種簡(jiǎn)單的方法。由于企業(yè)內(nèi)部網(wǎng)中各臺(tái)計(jì)算機(jī)的位置、用途和安全性明確,更適于使用安全策略文件來設(shè)置java的權(quán)限,軟件的安裝、設(shè)置、升級(jí)和遷移都非常的方便,并且,還可以和數(shù)字簽名配合使用,更重

2、要的是,可以細(xì)分每個(gè)java程序的權(quán)限,使用起來靈活方便。一.Java中安全策略的概念- -Java應(yīng)用程序環(huán)境的安全策略,詳細(xì)說明了對(duì)于不同的代碼所擁有的不同資源的許可,它由一個(gè)Policy對(duì)象來表達(dá)。為了讓applet(或者運(yùn)行在SecurityManager下的一個(gè)應(yīng)用程序)能夠執(zhí)行受保護(hù)的行為,例如讀寫文件,applet(或Java應(yīng)用程序)必須獲得那項(xiàng)操作的許可,安全策略文件就是用來實(shí)現(xiàn)這些許可。- -Policy對(duì)象可能有多個(gè)實(shí)體,雖然任何時(shí)候只能有一個(gè)起作用。當(dāng)前安裝的Policy對(duì)象,在程序中可以通過調(diào)用getPolicy方法得到,也可以通過調(diào)用setPolicy方法改變。Po

3、licy對(duì)象評(píng)估整個(gè)策略,返回一個(gè)適當(dāng)?shù)腜ermissions對(duì)象,詳細(xì)說明那些代碼可以訪問那些資源。- -策略文件可以儲(chǔ)存在無格式的ASCII文件,或Policy類的二進(jìn)制文件,或數(shù)據(jù)庫(kù)中。本文僅討論無格式的ASCII文件的形式。二.Policy文件的格式- -為了能夠更好地理解下面的內(nèi)容,建議在閱讀時(shí)參照jdk1.2jrelibsecurityjava.policy文件和jdk1.2jrelibsecurityjava.security文件的內(nèi)容。- -1.Policy文件的語法格式與說明- -一個(gè)Policy文件實(shí)質(zhì)上是一個(gè)記錄列表,它可能含有一個(gè)"keystore”記錄,以及

4、含有零個(gè)或多個(gè)“grant”記錄。其格式如下:keystore"some_keystore_url","keystore_type"grantSignedBy"signer_names",CodeBase"URL"Permissionpermission_class_name"target_name","action",SignedBy"signer_names"Permission.;- -1.1"keystore"記錄- -一個(gè)ke

5、ystore是一個(gè)私有密鑰(privatekeys)數(shù)據(jù)庫(kù)和相應(yīng)的數(shù)字簽名,例如X.509證書。Policy文件中可能只有一條keystore記錄(也可能不含有該記錄),它可以出現(xiàn)在文件中g(shù)rant記錄以外的任何地方。Policy配置文件中指定的keystores用于尋找grant記錄中指定的、簽名者的公共密鑰(publickeys),如果任何grant記錄指定簽名者(signer_names),那么,keystore記錄必須出現(xiàn)在policy配置文件中。- -"some_keystore_url"是指keystore的URL位置,"keystore_type&q

6、uot;是指keystore的類型。第二個(gè)選項(xiàng)是可選項(xiàng),如果沒有指定,該類型則假定由安全屬性文件(java.security)中的"keystore.type”屬性來確定。keystore類型定義了keystore信息的存儲(chǔ)和數(shù)據(jù)格式,用于保護(hù)keystore中的私有密鑰和keystore完整性的算法。SunMicrosystems支持的缺省類型為“JKS'。- -1.2"grant"記錄- -在Policy文件中的每一個(gè)grant記錄含有一個(gè)CodeSource(一個(gè)指定的代碼)及其permission(許可)。- -Policy文件中的每一條grant

7、記錄遵循下面的格式,以保留字“grant”開頭,表示一條新的記錄的開始,“Permission”是另一個(gè)保留字,在記錄中用來標(biāo)記一個(gè)新的許可的開始。每一個(gè)grant記錄授予一個(gè)指定的代碼(CodeBase一套許可(Permissions)。- -permission_class_name必須是一個(gè)合格并存在的類名,例如java.io.FilePermission,不能使用縮寫(例如,F(xiàn)ilePermission)。- -target_name用來指定目標(biāo)類的位置,action用于指定目標(biāo)類擁有的權(quán)限。- -target_name可以直接指定類名(可以是絕對(duì)或相對(duì)路徑),目錄名,也可以是下而的通

8、配符:directory/*目錄下的所有文件- 當(dāng)前目錄的所有文件directory/-目錄下的所有文件,包括子目錄- 當(dāng)前目錄下的所有文件,包括子目錄ALLFILES文件系統(tǒng)中的所有文件對(duì)于java.io.FilePermission,action可以是:read,write,delete和execute。對(duì)于.SocketPermission,action可以是:listen,accept,connect,read,write。- -1.3Policy文件中的屬性擴(kuò)展(PropertyExpansion)- -屬性擴(kuò)展與shell中使用的變量擴(kuò)展類似,它的格式為:"$some.p

9、roperty”實(shí)際使用的例子為:permissionjava.io.FilePermission"$user.home","read""$user.home"的值為"d:Project",因此,下面的語句和上面的語句是一樣的:permissionjava.io.FilePermission"d:Project","read"三.實(shí)例-當(dāng)初始化Policy時(shí),首先裝載系統(tǒng)Policy,然后再增加用戶Policy,如果兩者都不存在,則使用缺省的Policy,即原始的沙箱模型。-

10、 -系統(tǒng)Policy文件的缺省位置為:java.home/lib/security/java.policy(Solaris)java.homelibsecurityjava.policy(Windows)用戶Policy文件的缺省位置為:user.home/.java.policy(Solaris)user.home.java.policy(Windows)-其實(shí),在實(shí)際使用中,我們可能不會(huì)象上面介紹的那么復(fù)雜,特別是在不使用數(shù)字簽名時(shí)。這時(shí),我們完全可以借鑒JDK1.2提供給我們的現(xiàn)成的jdk1.2jrelibsecurityjava.policy文件,根據(jù)我們的需要作相應(yīng)的修改,本文就針對(duì)

11、不使用數(shù)字簽名情況詳細(xì)說明安全策略文件的用法。-下面,是一個(gè)完整的在Windows95/98/NT下使用的.java.policy文件。在文件中,分別使用注釋的形式說明了每個(gè)“permission”記錄的用途。/ForLanServerTalk.javaandLanClientTalk.javagrant/對(duì)系統(tǒng)和用戶目錄“讀”的權(quán)限permissionjava.util.PropertyPermission"user.dir","read"permissionjava.util.PropertyPermission"user.home&quo

12、t;,"read"permissionjava.util.PropertyPermission"java.home","read"permissionjava.util.PropertyPermission"java.class.path","read"permissionjava.util.PropertyPermission"","read"/對(duì)線程和線程組的操作權(quán)限permissionjava.lang.RuntimePermiss

13、ion"modifyThread"permissionjava.lang.RuntimePermission"modifyThreadGroup"/操作Socket端口的各種權(quán)限.SocketPermission"-","listen".SocketPermission"-","accept".SocketPermission"-","connect".SocketPermission"-","read&q

14、uot;.SocketPermission"-","write"/讀寫文件的權(quán)限permissionjava.io.FilePermission"-","read"permissionjava.io.FilePermission"-","write"/退出系統(tǒng)的權(quán)限,例如System.exit(0)permissionjava.lang.RuntimePermission"exitVM"四.java.policy文件的使用- -對(duì)于windows95/98

15、/NT,使用.java.policy文件的方法主要有下面兩種。- 1.使用缺省目錄- -我們可以簡(jiǎn)單地將編輯好的.java.policy文件拷貝到windows95/98/NT的HOMIB錄,這時(shí),所有的applet(或Java應(yīng)用程序)可能都擁有某些相同的權(quán)限,使用起來簡(jiǎn)單,但不靈活(例如:對(duì)于java.io.FilePermission,其目標(biāo)類的target_name必須使用絕對(duì)路徑),如果不是在企業(yè)內(nèi)部網(wǎng)中使用,還可能存在一定安全隱患。- 2.在命令行中指定- -在命令行,如果我們希望傳遞一個(gè)Policy文件給appletviewer,還可以使用"-J-Djava.secuHty.policy”參數(shù)來指定policy的位置:appletviewer-J-Djava.security.policy=pURLmyApplet- -pURL為Policy文件的位置。下面,是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論