全面保护你的Java程序安全(上)

全面保护你的Java程序安全(上),第1张

全面保护你的Java程序安全(上),第2张

第一部分:Java的安全基础——虚拟机和字节码安全。

简介:安全问题对许多人来说非常重要。从历史上看,Java安全主要是指虚拟机和字节码安全。但是,这种观点忽略了两个重要的方面——应用和网络安全。在接下来的系列文章中,Todd Sundsted阐述了Java虚拟机安全、应用程序安全和网络安全,并解释了应该采取哪些措施来全面巩固您的JAVA安全。在第一部分,他向我们解释了Java安全性的基础:虚拟机和字节码安全性。
“好像从来没有人因为写不安全的Java代码而被解雇”。这句话是我对流行的一句话“从来没有人因为买IBM而被解雇”的修改版。那些更关心网速的员工和那些更有兴趣在简历中添加更有价值的项目的员工经常会犯安全问题。
我们再来看另一个令人担忧的现象:当我和管理人员、工程师谈论安全问题时,我经常发现他们对自己的行为有一些误解。他们认为不需要考虑安全问题,因为“Java本身就等于安全”。在这种错误观念的指导下,工程师们没有考虑以下三个安全问题:虚拟机安全、应用安全和网络安全。
在接下来的系列文章中,我会尽力纠正这种错误观念。接下来我将从三个方面来讨论Java安全,列举常见的安全问题是如何被黑客攻击的。我还将介绍一些创建安全应用程序的方法。

三种安全问题:

Java刚出现的时候,开发者、研究人员和新闻媒体圈对它的安全问题反应激烈。在早期,Java安全意味着字节码安全和虚拟机安全。由于Java曾经是一种下载并在本地执行的小型应用程序开发语言,所以下载代码的安全性和执行环境极其重要。在这种情况下,安全性意味着正确安装类加载器和安全管理器,并验证下载的代码。
在我开发C/C++程序的前几年,我从来没有担心过虚拟机的安全性——这个问题随着Java成为了人们关注的焦点。说到安全问题,我总是担心应用程序的漏洞或者危及程序或系统安全的实现。在C++领域,应用程序安全性包括限制“setuid”代码的范围(在Unix环境中,setuid代码作为另一个用户进程运行—通常是超级用户)以及试图避免缓冲区溢出和其他类型的堆栈问题。
然而,分布式应用的引入也带来了一些其他问题。顾名思义,分布式程序由许多部分组成,每个部分驻留在自己的机器上,并通过公共网络与其他部分通信。Web应用程序就是一个典型的例子。网络安全意味着签名、授权、应用组件、加密的通信通道等。
很多开发者并不知道上述方面的区别,认为Java在虚拟机层面是安全的,所以整个应用都是安全的。我真的希望能改变这种想法。我们来讨论一下Java的虚拟机安全性。

安全基础:虚拟机安全

虚拟机安全一直是开发者关注的焦点,几乎到现在仍然没有结果。

在转向应用程序和网络安全之前,我最初对讨论虚拟机安全感兴趣。我决定给它和其他两部分一样公平的时间来讨论,原因有二:第一,优秀的编程教材应该包含了大量过去六年发现的漏洞;第二,很多安全问题跨越了我要讨论的三个方面。为了有透彻的了解,你必须充分熟悉三个方面,包括Java虚拟机安全。
如果你查看过去6年发现的各种安全问题(见http://www . Java world . com/Java world/jw-06-2001/jw-0615-how to . html # resources官方列表),你会发现它们被分成一系列目录。就虚拟机安全而言,两个最重要的安全漏洞是未经验证的和可能非法的字节码和Java类型的系统损坏。在实际开发中,两者往往是联系在一起的。

探索未验证代码

当JVM通过网络从服务器下载类代码时,它无法知道这些字节码是否可以安全地执行。的安全字节码绝不会指示虚拟机执行将Java运行时保持在无休止的无效状态。
通常,Java编译器可以确保创建的类文件中的字节码是安全的。但是,也可以手工编写Java编译器不允许的字节码。Java checker使用一系列富有想象力的方法来检查所有这样的字节码,并验证那些不符合标准的代码。一旦验证完成,JVM就知道程序代码是安全的——只要验证器正常工作。
让我们来看看下面的列表,以便更好地理解验证者所扮演的角色,并了解一旦验证者失败会发生什么。
考虑下面这个类:
public class test1
{
public static void main(string[]arstring)
{
float a = new float(56.78);
Integer b =新整数(1234);
system . out . println(a . tostring());
}
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 全面保护你的Java程序安全(上)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情