我可以使用定制的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