?? ftp6.txt
字號(hào):
訪(fǎng)問(wèn)客戶(hù)端資源
Java應(yīng)用程序環(huán)境的安全策略,對(duì)于不同的代碼所擁有的不同資源的許可,它由一個(gè)Policy對(duì)象來(lái)表達(dá)。為了讓Applet(或者運(yùn)行在 SecurityManager下的一個(gè)應(yīng)用程序)能夠執(zhí)行受保護(hù)的行為,例如讀寫(xiě)文件,Applet(或 Java應(yīng)用程序)必須獲得那項(xiàng)操作的許可,安全策略文件就是用來(lái)實(shí)現(xiàn)這些許可。
Policy對(duì)象可能有多個(gè)實(shí)體,雖然任何時(shí)候只能有一個(gè)起作用。當(dāng)前安裝的Policy對(duì)象,在程序中可以通過(guò)調(diào)用getPolicy方法得到,也可以通過(guò)調(diào)用setPolicy方法改變。Policy對(duì)象評(píng)估整個(gè)策略,返回一個(gè)適當(dāng)?shù)腜ermissions對(duì)象,詳細(xì)說(shuō)明哪些代碼可以訪(fǎng)問(wèn)哪些資源。策略文件可以?xún)?chǔ)存在無(wú)格式的ASCII文件或Policy類(lèi)的二進(jìn)制文件或數(shù)據(jù)庫(kù)中。本文僅討論無(wú)格式的ASCII文件的形式。
在實(shí)際使用中,我們可以不需要自己手動(dòng)去編寫(xiě)那么復(fù)雜的java.policy文件,特別是在不使用數(shù)字簽名時(shí)。這時(shí),我們完全可以借鑒JRE提供給我們的現(xiàn)成的 C:\Program Files\Java\jre1.5.0_12\lib\security\java.policy文件,根據(jù)我們的需要做相應(yīng)的修改,本文就針對(duì)不使用數(shù)字簽名情況編寫(xiě)安全策略文件。下面,是一個(gè)完整的在Windows NT/XP下使用的java.policy文件。在文件中,分別使用注釋的形式說(shuō)明了每個(gè)“permission”記錄的用途。當(dāng)然,不同的程序?qū)Y源訪(fǎng)問(wèn)權(quán)限的要求可能不一樣,可以根據(jù)項(xiàng)目需要進(jìn)行調(diào)整與選擇。
grant {
//對(duì)系統(tǒng)和用戶(hù)目錄“讀”的權(quán)限
permission java.util.PropertyPermission "user.dir", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "java.class.pat", "read";
permission java.util.PropertyPermission "user.name", "read";
//對(duì)線(xiàn)程和線(xiàn)程組的操作權(quán)限
permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
permission java.lang.RuntimePermission "loadLibrary.*";
//讀寫(xiě)文件的權(quán)限
permission java.io.FilePermission "<<ALL FILES>>", "read";
permission java.io.FilePermission "${user.dir}${/}jmf.log", "write";
permission java.io.FilePermission "${user.home}${/}.JMStudioCfg", "write";
permission java.net.SocketPermissio "*", "connect,accept";
permission java.io.FilePermission "C:\WINNT\TEMP\*", "write";
permission java.io.FilePermission "C:\WINNT\TEMP\*", "delete";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission javax.sound.sampled.AudioPermission "record";
// //操作Socket端口的各種權(quán)限
permission java.net.SocketPermission "-", "listen";
permission java.net.SocketPermission "-", "accept";
permission java.net.SocketPermission "-", "connect";
permission java.net.SocketPermission "-", "resolve";
permission java.security.AllPermission;
};
grant signedBy "saili" {
permission java.net.SocketPermission "*:1024-65535", "connect,accept,resolve";
permission java.net.SocketPermission "*:80", "connect";
permission java.net.SocketPermission "-", "listen, accept, connect, listen, resolve", signedBy "ganja";
permission java.net.SocketPermission "-", "accept";
permission java.net.SocketPermission "-", "connect";
permission java.net.SocketPermission "-", "resolve";
permission java.security.AllPermission;
};
筆者在本項(xiàng)目中,為了使用客戶(hù)端的用戶(hù)設(shè)置更加的方便與簡(jiǎn)單,將上面的文件采用VB或C#來(lái)做成一個(gè)小程序來(lái)寫(xiě)。然后將JRE及些exe共同打成一個(gè)EXE包,當(dāng)JRE安裝完成后,此小程序負(fù)責(zé)找到JRE在操作系統(tǒng)中的安裝路徑,并在程序中寫(xiě)出此java.policy文件,覆蓋原有的文件。如此一來(lái),用戶(hù)就只需安裝一個(gè)EXE文件,從而簡(jiǎn)化了安裝的操作次數(shù)。
1
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -