版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章java2安全技术-2- 简介 安全限制和许可 安全策略 (policy) 辅助工具 签名及发布目标-3-简介简介java中的安全中的安全 java是网络上使用的编程语言,安全性是非常重要的,特别是java平台的安全以及java技术部署带来的安全问题,尤其值得认真考虑。java中的安全包括两个方面: (1) 提供安全且易于构建的java平台,能够以安全模式运行java实现的应用程序。 (2) 提供用于编程语言的安全工具和服务,实现较广泛的安全。-4- java平台提供的原始安全模型称为沙箱模型(jdk1.0),该模型提供较窄环境沙箱来运行没有得到信任的代码。在沙箱模型中允许得到信任的本地
2、代码访问重要资源,而没有经过信任的远程代码只能访问沙箱内的很少部分资源。在jdk1.1中引入签名applet的概念,如果签名的密钥由接收applet的客户端认为是可信任的,那么这个经过正确数字签名的applet就可以当作可信任本地代码访问重要资源。这里签名applet和它的签名以jar格式传送。随着发展,在原来沙箱模型的基础上引入新的安全体系,形成java 2平台安全模型如图1所示。:简介简介java 2安全平台模型-5-从图1中可以看出,不管本地还是远程,签名还是未签名的代码都统一到类加载器处,咨询安全策略,然后决定代码能够访问的资源。java 2安全平台模型较之以前有了很大的改进,其主要特
3、点如下简介简介java 2安全平台模型 jvm 有价值的资源(文件等)沙箱类加载器安全策略本地或远程代码(签名的或者未签名的)代码以不同的许可运行,没有信任代码内置的概念图1-6-(1) 细粒度的访问控制。(2) 易于配置的安全策略。 (3) 易于扩展的访问控制结构。(4) 安全检查扩展到所有java程序,包括应用程序和applet。简介简介java 2安全平台模型-7- 图1中的多个沙箱模型可以看作有固定边界的保护域。所谓保护域是指一个对象集合,这些对象可以由安全策略中定义的一条规则直接访问。保护域分为系统域和应用程序域,受保护的资源,像文件系统、网络设施以及屏幕和键盘,只允许系统域进行访问
4、,而应用程序域可以通过授权许可访问受保护资源。类加载器将本地或远程代码(applet)载入的同时,策略文件给出域的划分和不同代码对不同域访问权限的许可,载入的类就根据域划分和权限许可来访问相应的域资源。图2为运行中类到域再到许可的映射。简介简介java 2安全平台模型-8-图2 类到域再到许可的映射许可许可e.classd.classc.classb.classa.class运行时的类安全策略域b域a简介简介java 2安全平台模型-9-安全限制和许可安全限制和许可 本地的代码类访问系统资源时通常不会受到太大的限制,所以本章主要讨论从服务器下载到客户端的远程代码applet访问客户端资源的情况
5、。 applet访问客户端资源时,由于java内嵌的平台安全性机制受到较大的限制,通常表现在无法读写客户端的文件,无法采集客户端音频。例如,当applet实现的是客户端和服务器端进行语音聊天时,客户端采集音频就会受到限制,还有无法启动客户端的socket进行传输等。下面看一个文件访问受到安全限制的例子。-10- 【例】 编写一个用来读取客户端文件的applet,客户端的文件路径及文件名为e:a.txt,文件内容为“你好,这是客户端的测试文件!”,如图3右部分所示。将读出的文件内容显示在文本区域内,如果访问出错,异常信息也显示在文本区域内。/程序文件名:appletsecurity.javaim
6、port java.awt.*;import java.awt.event.*;import java.applet.*;import java.io.*;public class appletsecurity extends applet 安全限制和许可安全限制和许可 实例实例-11-textfield filenamefield;textarea filearea;public void init() label lblname=new label(文件名:);label lblcontext = new label(文件内容:);filenamefield=new textfield(3
7、5);filenamefield.addactionlistener(new actionlistener()public void actionperformed(actionevent e)loadfile(filenamefield.gettext(););filearea=new textarea(10,35);安全限制和许可安全限制和许可 实例实例-12-add(lblname);add(filenamefield);add(lblcontext);add(filearea);public void loadfile(string filename)trybufferedreader
8、 reader=new bufferedreader(new filereader(filename);string context = new string();安全限制和许可安全限制和许可 实例实例-13-while(context = reader.readline()!=null)filearea.append(context + n);reader.close();catch(ioexception ie)filearea.append(io错误: + ie.getmessage();安全限制和许可安全限制和许可 实例实例-14-catch(securityexception se)
9、 filearea.append(安全访问错误: + se.getmessage(); 安全限制和许可安全限制和许可 实例实例-15- 程序编写后,编译生成相应的类,将类嵌入html文件,从本地服务器加载,在载入applet的界面上输入文件名e:a.txt后按回车键,在界面的文本区域内并没有显示相应a.txt的内容,只是提示“access denied (java.io.filepermission e:a.txt read)”,表示访问拒绝,如图3左部分所示。图3 applet访问文件出错显示和客户端文件内容安全限制和许可安全限制和许可 实例实例-16- java安全平台中受到的种种安全限制
10、,在java中都提供了一一对应的许可,例如对于读、写文件的限制,java提供了java.io.filepermission来许可对客户端文件的读、写等操作。下面看一下这些许可类。 许可类代表对系统资源的访问权限。java.security.permission类是抽象类,划分为多个子类来代表特定的访问。而不同的许可类属于不同的包,如filepermission类属于java.io包,而socketpermission类属于包。目前java系统内嵌的主要的许可类如表1所示。安全限制和许可安全限制和许可 许可类-17-表表1 java内嵌的许可类内嵌的许可类名 称 描 述 全 称 allpermi
11、ssion 包含所有其它许可 java.security.allpermission audiopermission 代表对音频系统资源的访问权限 javax.sound.sampled.audiopermission authpermission 认证许可 javax.security.auth.authpermission awtpermission 图形界面资源许可,像使用剪贴板 java.awt.awtpermission filepermission 文件及目录访问许可,像读、写 java.io.filepermission netpermission 各种网络许可,像请求密码认证
12、.netpermission propertypermission 访问系统属性许可 java.util.propertypermission reflectpermission 反射操作中禁止访问检查许可 java.lang.reflect.reflectpermission runtimepermission 运行时许可 java.lang.runtimepermission securitypermission 安全许可 java.security.securitypermission serializablepermission 序列化许可 java.io.serializablepe
13、rmission socketpermission 通过 socket 访问网络的权限 .socketpermission sqlpermission 调用 setlogwriter 方法时许可 java.sql.sqlpermission 安全限制和许可安全限制和许可 许可类-18- 建立这些类的对象就可以产生许可。例如,下面的代码用来产生许可读取/tmp目录下名为hello的文件: fileperm = new java.io.filepermission(/tmp/hello,read);安全限制和许可安全限制和许可 许可类-19-安安 全全 策策 略略 (policy) 1. keys
14、tore条目条目 keystore用来存放密钥对和相关数字证书。数字证书像x.509证书链用来鉴别相应的公有密钥。keytool工具用来创建和管理keystore。policy配置文件中指定keystore,用来查找grant条目中签名者的公有密钥。如果存在指明签名的grant条目,那么必须存在相应的keystore。keystore条目的格式为:keystore url,type-20- 其中: (1) keystore是保留字,表示keystore条目。 (2) url指kestore的url地址。 (3) type指keystore的类型,用于定义keystore信息的存储和数据格式,以
15、及保护keystore中的私有密钥和keystore完整性算法。通常情况下缺省类型为“jks”。安安 全全 策策 略略 (policy)-21- 2. grant条目条目 policy对象中含有0到多条grant条目,指明远程代码访问特定资源的相关许可。grant条目的格式如下:grant signedby name codebase url permission permission-class-name target-name, action-name ; permission permission-class-name target-name, action-name ;安安 全全 策策
16、 略略 (policy)-22- 其中: (1) 每个grant条目为由name签名且来源于codebase的类的访问提供一系列许可permission-class-name。 (2) grant为保留字,表示一条授权。 (3) signedby为保留字,指明签名者。 (4) name为数字签名的作者名。 (5) codebase为保留字,指明代码来源。 (6) url为指定代码的来源路径。安安 全全 策策 略略 (policy)-23-(7) permission为保留期,指明许可名字及许可操作。(8) permission-class-name指许可类名。(9) target-name为受
17、保护资源的名字,如文件目录。(10) action-name 为对受保护资源进行操作的权限。安安 全全 策策 略略 (policy)-24- 例如,下面为两条具体的grant条目,第一条表示允许lihua签名的网址3:8080/下的访问代码对temp目录的所有文件有读、写权限。第二条表示对本机java.home目录的子目录/lib/ext/下的所有代码授予任意访问受保护资源的权限。grant signedby lihua codebase 3:8080/permission java.io.filepermission
18、 tmp/*,read,wirte;grant codebase file:$java.home/lib/ext/* permission java.security.allpermission;安安 全全 策策 略略 (policy)-25-辅助工具辅助工具密钥和证书管理工具密钥和证书管理工具 keytool为密钥和证书管理工具。它使得用户可以管理他们自己的公共密钥和私有密钥对以及相关的证书,用于在数字签名中进行数据完整性验证和身份验证。 keytool将密钥对和证书存放在keystore中,keystore通常以文件的形式存在。创建keystore时需要为它设置密码,还要为其中的私有密钥设
19、置密码。命令提示符状态下键入不带参数的命令keytool,可以看见它的用法,如图4所示。-26-图4 keytool的用法辅助工具辅助工具密钥和证书管理工具密钥和证书管理工具-27- 例如,在命令行提示符状态下键入如下命令行,生成useimage.keystore文件,密钥和keystore的密码均为123456,显示结果如图5所示。keytool -genkey -alias useimage -keypass 123456 -keystore useimage.keystore -storepass 123456 其中: (1) -genkey:选项,表示生成新的密钥。 (2) -alia
20、s:别名选项,表示紧跟的参数为别名具体值:useimage。辅助工具辅助工具密钥和证书管理工具密钥和证书管理工具-28- (3) -keypass:密钥的密码选项,表示紧跟的参数为密钥的密码具体值: 123456 。 (4) -keystore:选项,表示紧跟的参数为生成的keysotre文件名称:useimage.keystore。 (5) -storepass:keystore密码的选项,表示紧跟的参数为keystore文件的密码具体值: 123456 。 辅助工具辅助工具密钥和证书管理工具密钥和证书管理工具-29-图5 生成文件useimage.keystore辅助工具辅助工具密钥和证书
21、管理工具密钥和证书管理工具-30- 而要将公共密钥导入证书,则需要键入如下代码,生成useimage.cer证书文件,结果如图6所示。 keytool -export -alias useimage -file useimage.cer -keystore useimage.keystore -storepass 123456图6 生成证书文件useimage.cer辅助工具辅助工具密钥和证书管理工具密钥和证书管理工具-31-jarsigner用来对jar文件进行数字签名和校验,这个过程基于keytool生成的keystore。在命令提示符状态下键入jarsigner后按回车键,可以看见用法及
22、选项说明,如图7所示。图7 jarsigner工具的用法及选项 辅助工具辅助工具签名和校验工具签名和校验工具-32- 常用的签名格式为: jarsigner -keystore keysotre-file -storepass keystore-password jar-file alias 其中: (1) keystore-file为keytool生成的keystore文件。 (2) keystore-password为keystore的密码。 (3) jar-file文件为档案文件而且只能为档案文件。例如:jar cvf useimage.jar useimage.class index_
23、01.gif;/生成jar文件jarsigner -keystore useimage.keystore -storepass xueliang useimage.jar useimage/进行签名辅助工具辅助工具签名和校验工具签名和校验工具-33-policytool是图形用户界面工具,可帮助用户指定、生成、编辑一个安全策略。命令提示符状态下键入policytool后按回车键,就可调出此图形界面。根据界面指示,可以实现一个policy文件的各种操作。下面来看一下系统默认的policy文件,将d:j2sdk1.4.0_01jrelibsecurity目录下的java.policy文件拷贝到e:
24、_workjavasample目录下,在命令行状态运行命令policytool,弹出“规则工具”对话框。单击“文件”菜单中的“打开”项,选择java.policy文件并打开,如图8所示。从图中可以看出允许两个codebase来源的远程代码。辅助工具辅助工具policytool-34-图8 使用policytool工具打开java.policy文件辅助工具辅助工具policytool-35- 选中第一个规则项目“codebase ”file:$java.home/lib/ext/*“”,单击“编辑规则项目”按钮,弹出一个“规则项目”的窗口,如图9所示,可以看见签名项(signedby:)为空,而
25、权限一栏中为 permission java.security.allpermission;表示允许这个规则项目下的所有远程代码对系统的所有资源进行访问。辅助工具辅助工具policytool-36-图9 全部授权的权限列表辅助工具辅助工具policytool-37- 选中第二个规则项目“codebase ”,单击“编辑规则项目”按钮,弹出如图10所示窗口。权限列表中可以看出对普通属性都有读的权限。这是客户端对所有远程代码的默认的安全限制列表。辅助工具辅助工具policytool-38-图10 所有远程代码访问的默认权限列表辅助工具辅助工具policytool-39-这个默认的java.poli
26、cy文件对应的源文件如下:/ standard extensions get all permissions by defaultgrant codebase file:$java.home/lib/ext/* permission java.security.allpermission;/ default permissions granted to all domains辅助工具辅助工具policytool-40-grant / allows any thread to stop itself using the java.lang.thread.stop() / method that
27、takes no argument. / note that this permission is granted by default only to remain / backwards compatible. / it is strongly recommended that you either remove this permission / from this policy file or further restrict it to code sources / that you specify, because thread.stop() is potentially unsa
28、fe.辅助工具辅助工具policytool-41-/ see http:/ for more information.permission java.lang.runtimepermission stopthread;/ allows anyone to listen on un-privileged portspermission .socketpermission localhost:1024-, listen;/ standard properies that can be read by anyonepermission java.util.propertypermission jav
29、a.version, read;permission java.util.propertypermission java.vendor, read;permission java.util.propertypermission java.vendor.url, read;辅助工具辅助工具policytool-42-permission java.util.propertypermission java.class.version, read;permission java.util.propertypermission , read;permission java.util.pr
30、opertypermission os.version, read;permission java.util.propertypermission os.arch, read;permission java.util.propertypermission file.separator, read;permission java.util.propertypermission path.separator, read;permission java.util.propertypermission line.separator, read;辅助工具辅助工具policytool-43-permiss
31、ion java.util.propertypermission java.specification.version, read;permission java.util.propertypermission java.specification.vendor, read;permission java.util.propertypermission , read;permission java.util.propertypermission java.vm.specification.version, read;permission java.
32、util.propertypermission java.vm.specification.vendor, read;permission java.util.propertypermission , read;permission java.util.propertypermission java.vm.version, read;permission java.util.propertypermission java.vm.vendor, read;permission java.util.propertypermission java.vm.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全协议书的法律效力
- 真不想和大佬协议书离婚
- 失眠症预防与管理方案训练
- 宇宙知识科普简短
- 2026广东汕头大学医学院实验动物中心劳务派遣人员招聘4人备考题库及参考答案详解(巩固)
- 2026国家统计局兵团第十四师调查队招聘1人备考题库(新疆)及参考答案详解(综合卷)
- 2026上半年安徽黄山市休宁城乡建设投资集团有限公司及权属子公司招聘18人备考题库含答案详解ab卷
- 2026四川甘孜州泸定县人民医院编外招聘工作人员5人备考题库及答案详解【必刷】
- 麻醉术后监测流程
- 2026黑龙江齐齐哈尔市拜泉县乡镇卫生院招聘医学相关专业毕业生5人备考题库附参考答案详解(达标题)
- 2025福建省晋华集成电路有限公司校园招聘笔试历年常考点试题专练附带答案详解
- 哔哩哔哩国创线下活动招商方案
- 2026年甘肃甘南碌曲县卫健系统招聘工作人员50人笔试备考题库及答案解析
- 国际税收 课件全套 张伦伦 第1-10章 国际税收概论 -国际税收发展
- 4.1 人要有自信 课件 2025-2026学年统编版道德与法治七年级下册
- 2026年消防设施操作员(中级监控)真题及答案
- 山东电工电气集团招聘笔试题库2026
- 传统医学出师考核和确有专长考核实施方案(试行)
- 2026年大连职业技术学院单招职业技能考试题库及答案详解(名师系列)
- 高级卒中中心建设与管理指南
- 钢结构焊接施工方案(最终版)
评论
0/150
提交评论