大学JAVA实用--第10章Java安全技术研究报告.pptx

大学JAVA实用--第10章Java安全技术研究报告.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 Java安全技术 10.1 简介 10.2 安全限制和许可 10.3 安全策略 (Policy) 10.4 辅助工具 10.5 签名及发布的例子 习 题 10.1 简 介 Java是网络上使用的编程语言,安全性是非常重要的,特别是Java平台的安全以及Java技术部署带来的安全问题,尤其值得认真考虑。Java中的安全包括两个方面: (1) 提供安全且易于构建的Java平台,能够以安全模式运行Java实现的应用程序。 (2) 提供用于编程语言的安全工具和服务,实现较广泛的安全。 Java平台提供的原始安全模型称为沙箱模型(JDK1.0),该模型提供较窄环境——沙箱来运行没有得到信任的代码。在沙箱模型中允许得到信任的本地代码访问重要资源,而没有经过信任的远程代码只能访问沙箱内的很少部分资源。在JDK1.1中引入签名Applet的概念,如果签名的密钥由接收Applet的客户端认为是可信任的,那么这个经过正确数字签名的Applet就可以当作可信任本地代码访问重要资源。这里签名Applet和它的签名以JAR格式传送。随着发展,在原来沙箱模型的基础上引入新的安全体系,形成Java 2平台安全模型如图10.1所示。从图10.1中可以看出,不管本地还是远程,签名还是未签名的代码都统一到类加载器处,咨询安全策略,然后决定代码能够访问的资源。Java 2安全平台模型较之以前有了很大的改进,其主要特点如下: (1) 细粒度的访问控制。 (2) 易于配置的安全策略。 (3) 易于扩展的访问控制结构。 (4) 安全检查扩展到所有Java程序,包括应用程序和Applet。 图10.1 Java 2平台安全模型 图10.1中的多个沙箱模型可以看作有固定边界的保护域。所谓保护域是指一个对象集合,这些对象可以由安全策略中定义的一条规则直接访问。保护域分为系统域和应用程序域,受保护的资源,像文件系统、网络设施以及屏幕和键盘,只允许系统域进行访问,而应用程序域可以通过授权许可访问受保护资源。类加载器将本地或远程代码(Applet)载入的同时,策略文件给出域的划分和不同代码对不同域访问权限的许可,载入的类就根据域划分和权限许可来访问相应的域资源。图10.2为运行中类到域再到许可的映射。 图10.2 类到域再到许可的映射 10.2 安全限制和许可 本地的代码类访问系统资源时通常不会受到太大的限制,所以本章主要讨论从服务器下载到客户端的远程代码Applet访问客户端资源的情况。 Applet访问客户端资源时,由于Java内嵌的平台安全性机制受到较大的限制,通常表现在无法读写客户端的文件,无法采集客户端音频。例如,当Applet实现的是客户端和服务器端进行语音聊天时,客户端采集音频就会受到限制,还有无法启动客户端的Socket进行传输等。下面看一个文件访问受到安全限制的例子。 【例10.1】 编写一个用来读取客户端文件的Applet,客户端的文件路径及文件名为E:\a.txt,文件内容为“你好,这是客户端的测试文件!”,如图10.3右部分所示。将读出的文件内容显示在文本区域内,如果访问出错,异常信息也显示在文本区域内。 //程序文件名:AppletSecurity.java import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; public class AppletSecurity extends Applet { TextField fileNameField; TextArea fileArea; public void init() { Label lblName=new Label(文件名:); Label lblContext = new Label(文件内容:); fileNameField=new TextField(35); fileNameField.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ loadFile(fileNameField.getText()); }}); fileArea=new TextArea(10,35); add(lblName); add(fileNameField); add(lblContext); add(fileArea); } public vo

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档