- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 汤显祖和牡丹亭.pptx VIP
- 2024年春江苏开放大学Android基础050324第三次形考作业.doc VIP
- 冠状动脉CT血管成像在慢性冠脉综合征的风险分层和诊疗中应用的专家共识.pptx
- 上海市浦东新区华东师范大学第二附属中学2024届高一数学第一学期期末考试试题含解析.doc VIP
- 中级商务汉语 全套课件.PPT VIP
- 中国式现代化党课学习主题教育.pptx VIP
- 行政事业单位审计存在的常见问题与对策.pptx VIP
- 营养科患者营养评估.pptx VIP
- IPC-A-610E-2010 国外国际标准.pdf
- 2024-2025学年高中信息技术(信息科技)必修1 数据与计算沪科版(2019)教学设计合集.docx
原创力文档


文档评论(0)