導航:首頁 > 編程語言 > java安全規范

java安全規范

發布時間:2022-08-27 08:50:48

『壹』 java的安全機制有哪些

》類裝載器結構
(class
loader)
》class文件檢查器
(the
class
file
verifier)
》內置於Java虛擬機(及語言)的安全特性
》安全管理器及Java
API
(security
manager)
在Java沙箱中,類裝載器體系結構是第一道防線。它在三個方面對Java的沙箱起作用:
1>它防止惡意代碼區干涉善意的代碼
2>它守護了被信任的代碼的邊界
3>它將代碼歸於某類(稱為保護域),該類確定了代碼可以進行哪種操作
Class文件檢查器:
Class文件檢查器保證裝載的class文件內容有正確的內部結構,並且這些class文件互相間協調一致。Class文件檢查器實現的安全目標之一就是程序的健壯性。如果某個有漏洞的編譯器,或某個聰明的黑客,產生了一個class文件,而這個class文件中包含了一個方法,則合格方法的位元組碼中含有一條跳轉到方法之外的指令,那麼,一旦這個方法被調用,它將導致虛擬機的崩潰,所以,處於對健壯性的考慮,由虛擬機檢驗它裝載的位元組碼的完整性非常重要。
Class文件檢查器要進行四趟獨立的掃描來完成它的操作。
第一趟:Class文件的結構檢查
在這一趟掃描中,對每一段將被當做類型導入的位元組序列,Class文件檢查器都會確認它是否符合JavaClass文件的節本結構。在這一趟檢查中檢查器會進行很多檢查例如:每個Class文件都必須以四個同樣的位元組開始:0xCAFEBABE。因為這個魔數Class文件分析器會很容易判斷出某個文件具有明顯問題而加以拒絕。檢查器還必須確認在Class文件中聲明的版本號和次版本號,這個版本號必須在這個虛擬機實現可以支持的范圍之內。而且第一趟掃描還必須確認這個Class文件有沒有被刪減。總之第一趟掃描的目的就是保證這個位元組序列正確的定義了一個新類型。
第二趟:類型數據的語義檢查
第二趟掃描,檢查器要查看每個組成部分,確認它們是否是其所屬類型的實例,他們的結構是否正確。另外還要檢查這個類本身是否符合特定的條件,它們是由Java編程語言規定的。例如,檢查器強制規定除Object類以外的類必須有一個超類,或者檢查final類有沒有被子化等。
第三趟:位元組碼驗證
這一趟是要確保採用任何路徑在位元組碼流中都得到一個確定的操作碼,確保操作數棧總是包含正確的數值以及正確的類型。
第四趟:符號引用的驗證
在動態鏈接的過程中,如果包含在一個Class文件中的符號引用被解析時,Class文件檢查器要進行第四趟檢查。第四趟掃描僅僅是動態鏈接過程的一部分。當一個Class文件被裝載時,它包含了對其他類的符號引用以及它們的欄位和方法。一個符號引用是一個字元串,它給出了名字,並且可能還包含了其他關於這個被引用項的信息------這些信息必須足以唯一的識別一個類、方法、欄位。這樣對於其他類的符號引用必須給出這個類的全名;對於其他類的欄位的符號引用必須給出類名、欄位名以及欄位描述符;對於其他類中的方法的引用必須給出類名、方法名以及方法的描述符。
所謂的動態鏈接是一個將符號引用解析為直接引用的過程。
此外,由於Java程序是動態鏈接的,所以Class文件檢查器在進行第四次掃描中,必須檢查相互引用類之間的兼容性。
除此之外,Java虛擬機還有一些內置的安全特性:
》類型安全的引用轉換
》結構化的內存訪問
》自動垃圾收集(不必顯式地釋放被分配的內存)
》空引用檢查
通過保證一個Java程序只能使用類型安全的、結構化的方法去訪問內存,Java虛擬機使得Java程序更為健壯。

『貳』 為什麼java安全規范要寫明不要信任環境變數的值,那怎麼獲取tomcat目錄

//System.err.println(request.getSession().getServletContext().getRealPath("/"));

『叄』 JAVA的安全性怎麼理解為什麼它是安全的

Java適用與網路/分布式環境,因此在安全方面投入了很大精力.使用Java可以構建防毒、防篡改的系統.
最初的Java就包括:
禁止運行時堆棧溢出.(例如蠕蟲等病毒常用的襲擊手段);
禁止在自己的處理空間之外破壞內存;
未經授權禁止讀寫文件.
並且,許多安全特性相繼不斷被加入java中.從1.1開始,java就有了數字簽名類(digitally signed class)的概念.(我們瀏覽網頁時會經常遇到的.)通過數字簽名類,可以確定類的作者.如果信任這個類的作者,這個類在你機器上就能擁有更多許可權.
但是即使這樣,還是要說一句"安全不是絕對的".

『肆』 Java 為什麼比 PHP 更加安全穩定可維護

其實我個人覺得語言的選擇,不能說決定代碼的穩定性,或者說是可維護性的高低,因為這兩個主要還是看代碼的本身。

編碼可以說所有的東西JAVA還有PHP主要都是看編碼和代碼的。

也可以這樣說JAVA,大小寫比較敏感。但是PHP對方法名啊,或者函數。這些基本上是不區分大小寫的他都可以的。

其實我個人覺得,如果說是用JAVA的話可以更好的讓你更加流利,或者說是更加快捷方便的去寫一個更好的統一的一個編碼,或者說一個代碼這樣話就會利於維護啊,或者閱讀這樣的話,你其實用JAVA的話會比較方便一些,畢竟PHP他之間相互的過程方程式啊,這些編程的問題可能沒有JAVA方便。

但是你如果說哪個更加的安全穩定,並且可以維護的話,這個就看開發者的水平來保證的是沒有辦法說他們兩個到底哪個更好,因為完全取決於代碼,編程的問題就是掌握在使用的人的手裡。

『伍』 為什麼java的安全性比較高

java的安全性體現在兩個方面:

1、語言層次的安全性主要體現在:

2、在運行環境提供了四級安全性保障機制:

位元組碼校驗器 -類裝載器 -運行時內存布局 -文件訪問限制

『陸』 java 多線程中的線程安全問題(Java高手進)

線程安全跟單例模式沒有必然聯系。

單例僅保證了一個JVM下僅一個對象,但多個線程有可能同時操作該對象。
線程安全主要體現在,一個線程霸佔某資源後,其它線程只有等待而不是搶奪,一旦造成互相搶奪即有可能出現數據讀寫混亂甚至死鎖。
你的f1、f2、f3等沒有公共數據,除非這些方法絕對地「自娛自樂」,比如:
public void f1() {
int a, b = 0;
int c = a + b;
}
也就是跟外界一點關系沒有,此時不用加synchronized也是安全的。
但一個方法總要跟外界打交道,一旦涉及到外界數據,它就有不安全的隱患,即便是單例模式。

哦,還有,不同的數據是不可能被放在同一「內存片段」中的,都是相互「獨立」的。線程體現在CPU時間片段的分配上,線程搶資源搶的也是CPU資源,數據還是那個數據。

methodA(Object o){...}
這個例子是不正確的,Object o僅為形參。雖然一段源代碼在載入時要開辟一塊內存空間,但運行時並不是在這塊空間上。方法每次運行時都會開辟一個新的內存空間,該空間被當前CPU時間片壓到棧頂進行讀寫,在其內創建形參Object o,方法結束後該空間出棧,如未結束即有另一線程運行該方法,則也是在另一個內存空間內重新開始這個過程,被另一個CPU時間片壓到棧頂,且Object o始終是形參隨方法而消亡,不會與實參混淆。並不是說單例模式就是總在同一內存空間上操作,單例僅保證載入的惟一性,載入是進堆內存的,而運行的先後是依賴棧(誰在棧頂誰進行讀寫)的。

『柒』 JAVA的安全性究竟怎樣體現出來

『捌』 java哪些類是線程安全的

JAVA中線程安全的map有:Hashtable、synchronizedMap、ConcurrentHashMap。
java中map中線程安全怎麼實現:
1、同步的map就是Hashtable, concurrenthashmap。
2、你看到的Hashtable就是直接在hashmap上加了個鎖,concurrenthashmap就是分成多個分段鎖。
java代碼中線程安全級別:
1、絕對線程安全。
在任何環境下,調用者都不需要考慮額外的同步措施,都能夠保證程序的正確性。這個定義要求很嚴格,java裡面滿足這個要求的類比較少,對於實現jsr133規范(java內存模型)的jdk(一般指jdk5.0之上),一般的不變類都是滿足絕地線程安全的。比如 String,Integer類。一般情況下,定義了如果一個類裡面所有欄位都是final類型的,一般都認為這個類是不變的。不變類都是絕對線程安全的。
2、相對線程安全
在一般情況下,調用者都不需要考慮線程同步,大多數情況下,都能夠正常運行。jdk裡面大多數類都是相對安全的。最常見的例子是java裡面Vector類。

『玖』 下面有關java代碼安全性的敘述哪些是對的

下面有關Java代碼安全性的敘述,( )是對的。 Ⅰ:位元組碼校驗器載入查詢執行需要的所有類。 Ⅱ:運行時解釋器執行代碼。 Ⅲ:在運行時,位元組碼被載入,驗證後在解釋器裡面運行。 Ⅳ:類載入器通過分離本機文件系統的類和從網路導入的類增加安全性。
A.Ⅱ、Ⅲ
B.Ⅱ、Ⅲ、Ⅳ
C.Ⅰ、Ⅲ、Ⅳ
D.Ⅲ、Ⅳ

請幫忙給出正確答案和分析,謝謝!

正確答案:B
解析:該題考查考生對Java程序代碼安全性的掌握。Java程序運行的過程是這樣的:類載入器載入程序運行所需要的所有類,它通過區分本機文件系統的類和網路系統導入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機類總是先被載入,一旦所有的類被載入完,執行文件的內存劃分就固定了,在這個時候,特定的內存地址被分配給對應的符號引用,查找表也被建立,由於內存劃分發生在運行時,解釋器在受限制的代碼區增加保護,防止未授權的訪問;然後位元組碼校驗器進行校驗,主要執行下面的檢查,類是否符合JVM規范的類文件格式,有沒有違反訪問限制,代碼有沒有造成堆棧的上溢或者下溢,所有操作代碼的參數類型是否都是正確的,有沒有非法的數據類型轉換(例如將整型數轉換成對象類型)發生;校驗通過的位元組碼被解釋器執行,解釋器在必要時通過運行時系統執行對底層硬體的相應調用。

『拾』 java平台沙箱安全模型包含以下哪幾個安全組件

1、位元組碼校驗器(bytecode verifier):

確保Java類文件遵循Java語言規范。這樣可以幫助Java程序實現內存保護。但並不是所有的類文件都會經過位元組碼校驗,比如核心類。

2、存取控制器(access controller):

存取控制器可以控制核心API對操作系統的存取許可權,而這個控制的策略設定,可以由用戶指定。

3、安全管理器(security manager):

是核心API和操作系統之間的主要介面。實現許可權控制,比存取控制器優先順序高。

4、安全軟體包(security package):java.security下的類和擴展包下的類,允許用戶為自己的應用增加新的安全特性,包括:安全提供者、消息摘要、數字簽名、加密、鑒別。

5、策略文件

策略文件是控制沙箱的管理要素,一個策略文件包含一個或多個保護域的項。策略文件完成了代碼許可權的指定任務,策略文件包括全局和用戶專屬兩種。

閱讀全文

與java安全規范相關的資料

熱點內容
解密攝影pdf 瀏覽:72
演算法編程中級題目 瀏覽:249
c語言編譯器畢業設計 瀏覽:715
醫保卡申請app哪個好 瀏覽:944
阿里雲伺服器上傳源碼 瀏覽:602
營銷管理科特勒pdf 瀏覽:696
願望清單app哪個好 瀏覽:459
安卓外放聲音怎麼解決 瀏覽:195
脈脈app干什麼用的 瀏覽:360
拽姐是哪個app 瀏覽:860
雲伺服器刪除了還有嗎 瀏覽:234
macbook可以用單片機嘛 瀏覽:309
南陽php招聘 瀏覽:816
去哪裡找按摩師很漂亮的app 瀏覽:820
86x99用簡便演算法計算 瀏覽:832
php截圖flash 瀏覽:276
卸載聯想app哪個好 瀏覽:721
php文字轉圖片 瀏覽:332
豆客後台怎麼加密碼 瀏覽:576
jpg轉換pdf破解版 瀏覽:980