2013-07-02 40 views
1

鑑於正確的代碼,編寫安全的Java程序相對簡單(除非特定的利用目標)不能離開沙箱或做有潛在危險的事情。root用戶可以在正在運行的JVM中訪問哪些信息?

但是,我的問題源於此。根用戶在JVM中必須獲得哪些訪問信息?是否有任何保護措施可以用來限制或刪除root用戶可以看到/修改的內容?最後,有沒有人知道有什麼好的資源可以讓自己達到規範?這似乎是一個非常困難的話題谷歌...

+3

簡單的答案:你無法防止這種情況。一個根可以做任何事情(只要你沒有像SELinux那樣的反制措施)。這與Java無關。 –

+0

SELinux不值得,太多的工作。除非你在一個財務機構,並且你在安全部門。 –

回答

1

這個問題讓我想起時,有人問:「有沒有辦法加密我的配置文件中的用戶名和密碼?」。

問題是,如果用戶已經擁有對您的服務器的根訪問權限,那麼與查詢正在運行的JVM相比,您有更大的擔心。例如,假設你的應用程序有一個hibernate.cfg.xml文件,他們可以很快地看到你的數據庫的憑證。當他們有惡意的服務器訪問時,他們可以做更糟的事情。

+0

謝謝,我不敢聽到這個答案。對我來說幸運的是,並不是我擔心有人訪問我的服務器 - 只是有人可以訪問我在他們的機器上執行的代碼(允許它在那裏運行)。 – cscan

+0

啊 - 這是一個不同的問題,如果你真的擔心這個問題,你可以考慮一下obfustication(這是一種不安全的,它只是另一個複雜程度)。考慮http://secureteam.net/Java-Obfuscator-Features.aspx,但要確保它們不會改變代碼流。 – david99world

0

root可以做任何事情,但是你不應該首先使用root。大多數人使用root能夠綁定到低於1000的端口,例如http(s)服務器的80或443端口。

你可以解決這個問題,而不是以root身份運行你的jvm。

0

幸運的是我,這不,我很擔心有人訪問我的服務器 - 只要有人訪問,我有自己的機器上執行代碼(這是允許運行有)

如果他們控制系統(例如他們擁有root訪問權限),他們可以讀取JVM的地址空間,並且(給定時間和技能)恢復嵌入代碼或數據中的任何信息/祕密。

沒有真正有效的解決方案。 (對於熟練的黑客來說,模糊處理只是「速度顛簸」。)如果你不能相信擁有root權限的人,你就不應該在他們的機器上運行包含祕密的代碼。

相關問題