2011-08-20 56 views
0

您可以随时查看某种方法调用的安全检查。 我知道它是如何工作的,但我不知道检查它们的原因。或者说最适合使用它们的用例?我很惊讶在JDK源代码中找到它们的频率很高,但很难知道其目的。你们有没有在工作中使用它们?在哪些情况下?使用java.lang.SecurityManager的最适合的用例?

我需要在这里添加一个常量。文件许可非常简单。我的意思是那些函数调用权限检查。什么样的函数调用被认为是危险的,应该使用安全管理器进行检查?

例如,

jaav.security.Policy

private static void checkPermission(String type) { 
    SecurityManager sm = System.getSecurityManager(); 
    if (sm != null) { 
     sm.checkPermission(new SecurityPermission("createPolicy." + type)); 
    } 
} 

回答

2

,以防止他们是讨厌有些Java应用程序在沙盒环境中运行的程序(applets,Webstart的应用等)(例如,在一些随机的HTML页面中执行一个applet应该不能够访问文件系统并阅读所有个人数据)。这些检查构成沙箱。

有些方法可以启用某些受限制的操作(通过签署瓶子并请求最终用户的批准)。

安全管理器处理什么是允许的,哪些不是。阅读http://download.oracle.com/javase/6/docs/technotes/guides/security/permissions.html。它列出了所有许可证,并描述了允许它们遇到的风险。

+1

是的。文件读取权限更易于理解。但是像createPolicy或find classloader这样的方法很难理解。 –

+0

+1您的答案基本正确。 createPolicy是危险的。如何解释getClassLoader。但我希望看到除文件权限外的更多用例 –

+2

请阅读http://download.oracle.com/javase/6/docs/technotes/guides/security/permissions.html。它列出了所有许可证,并描述了允许它们遇到的风险。 –