Java语言安全性.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java语言安全性

Java 语言安全性 硬件,操作系统,编译系统,数据库系统,应用软件系统。 编程语言的安全性。 人员,管理制度。 Java的安全性被认为就是字节码和虚拟机的安全性。 应用程序的安全性,程序中存在的瑕疵或危及程序安全的不当操作,以及程序运行所处的操作环境。 网络的安全性保证措施包括对用户和应用程序的组件进行鉴权、授权,并对通信内容进行加密解密。 Java语言具有完善的安全框架,从编程语言,编译器、解释程序到Java虚拟机,都能确保Java系统不被无效的代码或敌对的编译器暗中破坏,基本上,它们保证了Java代码按预定的规则运作。Java是惟一一种从设计的开始就考虑安全性的移动代码。 编译器是Java语言最底层的安全机制 Java编程语言安全性 异常处理 在低级代码中出现异常较为常见,因此要么通过把它传递到到高级异常中暂时隐蔽起来待以后再次出现,要么可以作一些起基本的处理。 本地方法 应当小心应用本地方法。本地方法是在Java安全系统之外。安全管理员和其他Java安全机制都不能控制本地代码的运行。 因此本地代码出现错误或违反安全规则时,将会是致命的。应当检测本地方法所用的参数和它们的返回值。尤其是当一个本地方法有效地绕过Java安全核查时。 Java语言的编译器在对代码的编译过程中保障了部分的安全性。这主要是通过以下这几点来实现: 强定义 1 语言中所有原始类型都必须是预先定义的长度 2所有的操作都必须按照一定的顺序执行。 两个正确的Java编译器对同一程序的执行不应产生不同的结果。 去掉指针 Java编译器是通过符号指针来引用内存,符号指针是由Java运行系统在运行时,具体解释为实际的内存地址,Java 对指针进行完全的控制。程序员不能强制引用内存指针或直接进行任何指针操作,这样Java的内存分配和引用模型对于程序员是透明的,它完全由底层的运行系统控制,程序员不能通过修改代码而直接指向一个物理内存布局。 Java 语言中不含有指针结构,所以Java程序不能通过创建指针来读、写任意内存区域。但是这种方法在避免安全漏洞的同时,也失去了c语言中的编程的灵活性。 在Java中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。通过new得到对象的处理权,实际分配给对象的内存,可能随程序运行而改变,有效地防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。 无用单元的回收 它解决了在c和c++中存在的两个漏洞:忘记释放内存单元和两次释放的是同一内存单元。 忘记释放内存单元可能会造成操作系统崩溃等。释放同一内存单元两次却可能会导致内存单元的无法定位。 Java的无用单元回收可以消除了大多数的内存分配错误。 编译过程中严格的检测 Java 编译器在编译过程中进行广泛的、严格的检测,可以在编译过程中发现尽可能多的错误。 类文件验证 类文件验证,第一步就是将类读入解释器,即类加载. 然后进一步判断类文件的格式是否符合规定。 再就是字节代码验证。字节代码验证器保证了只有合法的代码才可以执行。 编译器把Java程序转换成与机器无关的字节代码。在新下载的applet运行前,字节代码验证器被激活,以便核查applet是否符合Java语言的规范,以及有没有违反Java语言规则或名字空间限制。 这是因为基于安全的原因,JVM对类文件中的代码作了严格的格式和结构限制。验证器也核查是否违反内存管理规定、堆栈下溢或溢出、以及非法数据类型的丢弃。这些问题可能使一个怀有敌意的applet对安全机制造成部分的破坏,或者applet用自身的代码在运行其间替换系统的一部分。 字节代码验证器和JVM一起用来保证运行其间语言类型的安全。例如,在数组中存储引用时, Java用运行时间类型核查来保证彻底的类型安全。 高层安全模式 Java 高层安全的实现完全基于软件技术。早期,SUN采用了沙盒模式(sandbox)——Web浏览器为动态下载的代码分配的运行区域来保证其安全性。即Java 无条件接受所有动态下载的代码,并限制其运行于沙盒中。而且,假设沙盒是一个程序执行的安全防护网。如果这个网上没有洞,那么程序运行就是安全的。Java 安全完全依赖于沙盒的正常运行。 一般来说实现技术越是复杂,则漏洞越多,越容易被攻击。 而Java的安全隐患就恰恰来自于执行沙盒的软件的复杂性。同时,沙盒将所有的动态下载的代码均看成是潜在可疑的,严格限制了代码多种行为,使代码的执行缺乏灵活性。如applet不能读取或修改存储在用户系统上的文件系统,因此就无法进行文件编辑的动态存取。 沙箱模型的实质是,本地代码是可信的,因而可全部访问关键系统资源(如文件系统);而下载的远程代码(一个applet)是不可信的,因而只能访问由沙箱内部所提供的有限资源。 安全模型很简单:本地类拥有全部

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档