我可以使用定製的SecurityManager避免第三方代碼創建新線程,啓動新虛擬機或泄漏數據嗎?SecurityManager是一個完整的安全解決方案嗎?
回答
線程創建導致致電securityManager.checkAccess(g)
,其中g
是ThreadGroup
。這又需要SecurityConstants.MODIFY_THREADGROUP_PERMISSION
。
創建新的JVM實例的唯一方法是啓動一個新進程。這將需要SecurityConstraints.FILE_EXECUTE_ACTION
。
因此,如果您的SecurityManager引發了這兩種權限的異常,則會涵蓋前兩種情況。
您需要確定什麼構成「泄漏數據」。是否擔心意外或故意泄漏?關注不受信任的代碼訪問數據,或不受信任的代碼的數據可以被其他線程,類等訪問?
你當然可以做前兩件事。但是,我不確定「泄漏數據」的含義。
請注意,您不需要自定義的SecurityManager,您只需要一個自定義策略文件。
但是不是最終用戶修改被動策略文件嗎? – 2010-03-24 17:14:43
我真的不明白這個問題的含義。 – james 2010-03-24 19:20:37
沒有什麼是完整的安全解決方案(除非你問銷售人員)。
我想說SecurityManager可以控制所有這些(正如你所說的,你不一定需要一個自定義的安全管理器,你可以簡單地通過一個策略來配置很多)。控制線程,處理執行,強制訪問私人數據和網絡連接(第三方應用向競爭對手發送私人數據等) - 這就是SecurityManager的用途。
但是,您需要權衡您需要多少安全。考慮到對於每個Java安全更新,Sun都會在Java安全沙箱中修復3-4個漏洞(Java 6u15 as an example)。這些更新每年發生大約3-4次(或者拿走,不知道甲骨文收購將如何做)。因此,這些〜12年的任何漏洞都可能導致您的數據泄露。
如果我的祕密對其他人非常有價值,我個人不會相信SecurityManager來控制在我的環境中運行的潛在惡意第三方代碼。 (我沒有寶貴的祕密,我已經不相信在SecurityManager下我的瀏覽器中運行Java的行爲。)
原來的問題說「出口」而不是「泄漏」。這似乎意味着問題是不受信任的代碼是否可以發佈它可以從外部訪問的數據。事實證明,擺脫互聯網上的所有祕密渠道是有點棘手。 – 2010-03-24 22:53:21
我明白了。閱讀(另一個)Tom的其他問題。如果他擔心最終用戶更改政策文件,我可能會誤解他的情況。 – 2010-03-25 16:07:23
- 1. 我的緩存解決方案解決方案是否安全?
- 2. 移動安全解決方案
- 3. Java網絡安全解決方案
- 4. VS 2010解決方案取決於另一個解決方案
- 5. Android:BitmapFactory.decodeStream OutOfMemoryException - 是SoftReference的解決方案嗎?
- 6. 是遞歸的解決方案嗎? - Python
- 7. 是值得的SSMS解決方案嗎?
- 8. JSF的XForms,這是一個合理的解決方案嗎?
- 9. 整個解決方案中的NuGet update_package
- 10. 整個Habitat解決方案的Nuget包
- 11. Visual Studio:單一解決方案還是很多解決方案?
- 12. 這是跨站點形式注入的安全解決方案嗎?
- 13. CGLayer是一個很好的解決方案嗎?
- 14. Capture Backspace,這是一個好的解決方案嗎?
- 15. Google Gears真的是一個長期解決方案嗎?
- 16. DynamicObject:這是一個很好的解決方案嗎?
- 17. 從郵編查找完整地址,解決方案是什麼?
- 18. 在整體解決方案
- 19. https://bintray.com是付費解決方案嗎?
- 20. 左連接是解決方案嗎?
- 21. 是否有粒狀安全腳手架解決方案?
- 22. 從另一個解決方案運行一個解決方案(.sln文件)
- 23. Erlang的httpd是一個很好的解決方案來託管一個webapp嗎?
- 24. Git是整個團隊之間同步文件的解決方案嗎?
- 25. 完全託管的數據庫解決方案?
- 26. 完整的PHP + MySQL IPv4和IPv6解決方案?
- 27. Apache ServiceMix是一個可能的解決方案嗎?速度夠快嗎?
- 28. 如何解決整個VS解決方案中不一致的行結尾?
- 29. C#中持久表/網格的正確解決方案不需要完整的數據庫解決方案?
- 30. 是NReco線程安全嗎?有沒有解決方法?在c#
..啓動新的虛擬機? – Roman 2010-03-24 15:43:47
是的,使用例如'Runtime.exec'。 'SecurityManager'可以用來限制外部進程的執行。 – Bombe 2010-03-24 16:31:25
任何圖靈完整的語言都可以創建一個虛擬機,並且你無能爲力......我估計OP只是想禁止運行任何**外部程序。 – 2010-08-30 00:11:08