Java应用程序的安全性研究
张天怡
摘要:随着互联网产业的快速发展以及云计算的广泛应用,Java由于其自身所具有的优点,得到了广泛的应用。但是,在Java程序应用的过程当中,其安全性问题引起了广泛的关注。网络应用程序的安全问题不仅与其所涉及的内容有着直接关系,同时也离不开相关的安全管理。在Java程序应用的过程当中,如何保证其应用的安全性,是一项急需解决的课题。文章在研究中主要分析了Java的安全机制,Java权限以及安全保护策略,以期对Java保护有所助益。
关键词:Java应用程序;安全性;安全机制;策略
以Java作为程序开发语言,其开发的程序最大特点是平台的无关性,尤其开发的程序能够在不同平台上进行移植,是企业级应用开发时常用的语言。Java是一种安全性的语言,并且经常被用来作为安全设计中的重要部分。当然,在Java设计语言应用当中也存在有很多缺陷,难以在全方位满足安全性的需求,从Java本身来看其保护方法比较少,而且这些方法往往不能取得很好的成效,这样导致了程序员设计的程序很容易被别人复制。因此,在Java程序应用当中,如何保证程序的安全性是重要的课题。
1.Java安全机制
1.1安全策略
Java是指其环境的安全主要是由安全策略决定的,在本质上安全策略指的是一个访问矩阵,具体指的是何种系统资源、使用何种方式以及在什么环境下能够被访问。一个完整的安全策略指的是从描述代码的特征到访问权限间的映射。在Java系统当中,Java安全体系主要是由应用保护域以及系统保护域两部分。在这之中,系统保护域的主要对象是文件系统以及网络套接字等系统资源的访问进行控制;应用保护域的对象主要是系统当中组建以及应用程序某部分访问进行控制,是系统中的具体的应用程序。在安全策略当中保护的应用能够有效提升Java应用的安全。并且在实际应用的过程当中,会采取定制权限的方式对特权代码的访问进行限制。
1.2Java认证以及授权服务
在实际运行的过程之中,Java需要根据依托于安全策略给运行代码相应的权限,在以代码为基础的访问控制方式以及系统依赖代码各种特性的安全措施,有很大差异,并且能够更加合理。但是,由于Java被用于多用户环境中,这就要求其必须与各种用户进行沟通,并且根据用户权限的不同给用户不同的许可。在应用的过程中,Java通过对用户进行认证和授权服务,能够为鉴别用户以及对用户进行权限进行分配以及提供准确化的编程接口,并在J2SEl.4中进行集成。这样在对访问行为进行控制时,可以选择以代码为中心的控制模式,也可以选择以用户为中心的控制模式,也可以将两者结合起来。JASS的应用提供了很重要的服务,具体指的是认证和授权。在认证环节当中只要知道是谁在运行代码,而不用去讨论和管理代码是怎样运行的。授权,指的就是对具体的用户操作权限进行确定。
1.3安全访问控制
在Java使用的过程当中,应用程序安全模型能够对访问工作进行有效管理,并可以对访问进行配置和一定调整。其中所有的访问资源都是访问权限的对象。在具体的应用过程当中,通过权限设置提供以及拒绝对用户提供资源,这样在运行的过程中,就确保了用户在相关指令的基础上进行操作。Java在其运行的过程其运行环境的安全性主要是有安全策略执行。安全策略能够在确定资源类型的基础之上,根据环境因素选择科学的访问方式。当前Java程序在不同的平台上进行运行时,为了保证运行的安全,系统安全需要依靠应用级上,相对建立在操作系统上的系统级安全,能够起到更好的效果。从这一方面来说,在Java的应用级上,拥有很多技术,从而能够有效确保系统安全,特别是在有关的应用程序在采取基本的保护之后,能够使系统的安全性得到很大提高,能够防范各种风险。
2.Java的权限以及保护策略分析
2.1保存本地数据
在本地存储独立应用程序存在一个问题,也就是在运行应用程序的用户一般需要读取以及写入数据文件,这就表明在不经过应用程序的情况下就能够修改以及读取数据。在防范这类风险时,最简单的做法就是将数据存储于不同的位置。如果信息必须在本地进行数据存储时,通过借助于JCE就可以对数据进行加密,之后将其存储到文件当中。在具体应用之中,对称密钥算法有更大的优势,因此,在进行加密时一般都会选择对称密钥。但是,对称密钥也有其缺陷,对称密钥没有公私结合的安全性。在密钥生成中,为了保证安全,会选择在密钥中加入口令和盐。口令可以自己决定,在解密当中只有通过口令才可以得到明文。盐具体指的是一个无关的数据序列,并可以将其加入到加密数据之中,在揭秘时,需要盐从明文当中去除,采用这种方式可以有效防止黑客的逆向处理。
2.2防止被盗版
在进行设计的过程中,尽管系统当中的各种安全漏洞被有效弥补了,但是,实际上仍旧容易受到攻击,也就是代码的滥用。即使不存在应用程序源代码,对技术水平比较高的技术人员而言,通过使用与设计者意愿不同的方式也可使用程序。因此,在程序使用的过程当中,必须采取合理的措施保证不会被盗版。虽然,从目前来看,还没有有效的方法防止盗版,但是在实际工作当中通过合理的使用JCE,能够确保程序有效规避攻击。在这之中一个十分有效的方法就是设计一个全面的软件授权策略。在以前,在这一方面很多机制都是使用哈希码或者是简单的加密进行传输和确认授权信息。这些技术仍然可以使用到Java当中。在此,可以假定可以对系统中所有的用户传递一个专门的“钥”,在进行解密时,包括了增强授权方法的各类信息。
2.3EJB安全
J2EE所提供的一个十分好的特性及时EJB,通过对不同的EJB的使用可以对组建进行实现。实体Bean指的就是持续数据,会话Bean代表与客户端进行对话,并且这也是其主要的功能,消息驱动Bean能够使EJB处理异步信息。如果在应用中只是采取容器提供的J2EE服务,那样从整体上看EJB抱住是最好的一种J2EE组件类型。EJB实现允许容器增强安全性,并且此种安全机制是保证EJB的最好时间。如果缺乏这样的安全机制,任何远程用户只能通过EJB服务器并得知远程部署的Bean接口信息,就可以访问服务器并能够执行远程方法。
2.4预防RMI风险
RMI的设计很简单,并且灵活多变,并且是建立在Java语言的多种特点的基础之上的,可以容易的实现网络之间方法的调用,并且默认多种全机制存在。这种用户通过调用远程访问方式,能够对存在的安全漏洞进行破解。RMI一般会在没有任何认证的情况,通过明文对网络间的方法进行调用,这样就出现了很严重的安全隐患,能够让没有经过认证的用户也能对系统信息进行访问。应用程序的安全,都蕴含着矛盾的思想,也就是说任何一项安全措施一方面能够为保证系统安全提供帮助,在另一方面也可能在运行的过程中造成损失,因此,在对程序进行设计和开发的过程中需要给予更多的安全考虑。Java具有多种安全特性,并且作为使用自身基础实现的保障平台。同时在Java语言中对于安全类型以及完整性语义都已经作了定义和规范,但是其仍旧需要虚拟机所支持的运行和保障。这就不难看出,利用现有的各种安全系统,建设一个体系保障Java的應用程序的安全性也是十分必要的。
3.结语
综上所述,在使用Java程序的过程中如何保护其安全性是一个复杂的问题。并且对着其应用程序的不断发展以及现代技术的快速进步,必须对齐安全性进行深入的研究和探索。在研究过程中,充分吸收成功案例取得的经验,并及时建设一个可靠的平台,才能够充分发挥出Java应用程序的作用,并向用户提供更加优质的服务。从整体上看,在Java开发平台涉及的安全方面的内容比较多,因此,要构建一个非常安全的Java应用程序是比较困难的。但是,这对于促进Java的应用有着十分重要的意义。文章主要研究了Java程序中存在的缺陷,并就其措施进行了探讨,希望对Java应用程序的安全保护工作有所帮助。