CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > 技巧

探索Java应用程序安全需求

作者: ,  出处:dev2dev, 责任编辑: 叶江, 
2007-04-20 13:52
  Java应用程序的安全条款,是本文所讨论内容的依据。我们的讨论把重点放在Java安全管理器方面,这是Java安全架构主题中的一个很小的子集

  我们知道,维护应用程序的安全并不简单。不过我们也清楚,完全可以采取一些措施来缓解安全缺陷带来的风险。如果我们是网络工程师,就可以将精力投入网络分区和包过滤器方面的知识。如果用C语言编程,我们就保护程序以防止缓冲区溢出。如果用Java编程,我们就考虑在安全管理器的保护之下运行应用程序。每种情况下,我们都用最佳实践中获得的知识来战胜无意造成的系统故障。

  Java应用程序的安全条款,是本文所讨论内容的依据。我们的讨论把重点放在Java安全管理器方面,这是Java安全架构主题中的一个很小的子集。

  安全管理器是 java.lang.SecurityManager类或扩展自该类的一个类,且它在运行时检查某些应用程序操作的权限。一旦受到安全管理器的控制,应用程序就只能执行那些由相关安全策略特别准许的操作。默认情况下,该策略是在纯文本 策略文件 中指定的。所涉及的操作包括:将文件写入特定目录、写协同属性、建立到特定主机的网络连接,这里列出的只是其中的一小部分。仅用一个简单的JVM命令行选项即可迫使Java应用程序在一个安全管理器下运行,而且安全策略文件可以由任何文本编辑器轻松创建。

  虽然编辑这样一个安全策略文件并添加各种相关规则并不难,不过获得策略制订权会更具有挑战性。而且尽管没人可以为我们提供这样的策略制订权,但工具能帮助我们理解那个策略应该是什么。开发并使用这样的工具是我们即将着手的工作。一旦我们有了它所发现的更宽泛、更细粒度的策略,就可以在开发产品运行时策略时将其作为起点,或者为了更好地理解和认识应用程序的安全需求而研究它。

  本文的核心代码是一个通用的安全管理器,要使用它就需要有Sun的JSE 5 JVM。 为了从特定的Java系统类中获得私有成员数据,从安全管理器对Java Reflecition API的依赖性中派生JSE 5(Java Standard Edition)的需求。由于缺乏对管理器运行所需的某有成员数据的公共访问,因而需要使用Reflection API。使用私有成员反射的后果就是管理器与其运行所在的的JVM内部紧密相关。但这算不上什么严重的后果,因为管理器是一个开发工具,而不是产品组件。一旦管理器提出一个策略制订起点,我们就可以采用那个策略,并在任何现代JVM上运行遵从它的应用程序。

  默认Java安全管理器

  现代文献中所编写、讨论及引用的绝大多数Java代码都代表着在不受安全管理器限制的情况下运行的应用程序。因而这种应用程序对所有的机器资源包括磁盘、网络和应用程序关闭等有完全访权限。不过这种宽泛的访问权限很容易受到限制。仅通过在JVM命令行上设置Djava.security.manager 选项,就可以迫使应用程序在默认的Java安全管理器下运行。

  看一下下面这个简单的应用程序,其目的是读取和打印用户的主目录

  public class PrintHome {
  public static void main(String[] argv) {
  System.out.println(System.getProperty("user.home"));
  }
  }

  编译代码,并让它在默认安全管理器的限制下运行

  $ cd $HOME/Projects/CustomSecurityManager
  $ javac PrintHome.java
  $ java -Djava.security.manager PrintHome
  Exception in thread "main" java.security.AccessControlException:
  access denied (java.util.PropertyPermission user.home read)
  ...
  at PrintHome.main(PrintHome.java:5)

  上面的应用程序中未能获得并打印 user.home属性,而且出于代码可读性方面的考虑,我们省略了栈跟踪中的绝大部分。该应用程序未能执行是因为随着缺省安全策略运行的缺省安全管理器禁止访问user.home属性。这个特权必须在运行策略文件中具体给出。

共4页。 1 2 3 4 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i