0 Java安全体系概述
从JDK 1.0开始Java就实现了一套安全架构,主要用于Applet. 在这种体系下Java Code的执行环境被严格划分为两个部分,本地代码可以访问计算机的所有资源,而远端代码(Romote Code: 主要是Applet)只能运行在严格限制的沙箱里面.安全管理器(Security Manager)作为一个子系统来决定哪些资源允许沙箱中的程序访问.
JDK 1.1引入了"签名Applet"的概念,一个被信任签名的Applet被当作和本地代码具有同等权限,可以访问全部的本地资源.
JDK 1.2做了很多改进.首先,无论本地代码还是远端代码(remote code)现在都服从于安全策略.安全策略为各种签名者和来源定义了一组许可(permission),可以由用户和系统管理员来配置各种许可.每个许可(permission)指定允许访问只用特定的资源,例如读或写一个特定的文件/目录或者可以连接到指定的地址和端口...
运行时系统将代码组织为不同的域(domain),每个域对应一组许可,在这个域中的类的实例都受这个域指定的许可的限制.
1. 控制你的Application
首先要明确的是,本地应用程序运行的时候,安全管理器(security manager)并没有被安装.所以,对于应用程序来说,默认是可以访问所有的资源,这一点和Applet不同.要启动安全管理器就是在启动命令行加上 -Djava.security.manager.默认加载的系统策略文件授予了所有代码访问一些通用属性的许可.这个文件是${jre_home}\lib\security\java.policy.在命令行上给定 -Djava.security.manager 启动应用程序,系统会首先加载${jre_home}\lib\security\java.security 在这个文件中搜索policy.url可以看到如下的两行
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
在这两行加载了默认的策略文件,我们也可以编辑自己的策略文件然后添加到java.security中使应用程序应用我们的安全策略.除此以外还有另一种指定我们自己的安全策略文件的方法,就是在命令行上使用 -Djava.security.policy=mypolicy 选项.
如果熟悉策略文件的语法,可以自己用文本编辑器编辑,推荐使用工具policytool,这是jre提供的一个专门用来编辑策略文件的工具.
2. 可信(Secure)代码和交换文件需要使用的API和工具
为了保证代码的安全性,需要确定代码或文件的来源,需要提供者进行数字签名.可以使用keytool或者security API来产生公钥/私钥对.为了验证公钥的确来自发布者,需要数字证书(certificate),数字证书由被信任的第三方提供.公钥/私钥对和证书存储在一个密码保护的数据库里,叫做keystores.
2.1 对代码签名并赋予许可
2.2 交换文件
2.3 产生和校验签名
3. 实现你自己的许可
本节中有一个例子,参见http://java.sun.com/docs/books/tutorial/security1.2/userperm/index.html
在代码中检查是否具有某种许可:
1. 调用System.getSecurityManager()来得到当前安装的security manager.
2. 如果返回结果不为null,可以进一步查询是否具有需要的许可.java.security.AccessController有个方法叫做doPrivileged,可以临时的提高某种权限来获得特定资源的访问许可,从而可以将对于特定资源的访问限定在某个类,并不对整个应用放开,只有调用特定的类才能访问特定的资源,详见New Privileged Block API相关文档.
3. java.security.Permission和java.security.BasePermission这两个类对于控制资源访问权限很重要.java.security.SecurityManager的方法checkPermission()接受的参数就是Permission极其子类.具体参见Java文档的java.security包部分.
4. 这个例子最后还详细描述了三个角色(框架开发者,资源访问类开发者和使用者)需要做的事情.
参考文献: http://java.sun.com/docs/books/tutorial/security1.2/TOC.html
分享到:
相关推荐
Java的安全沙箱机制是确保Java应用程序能够在不损害系统安全的前提下运行的重要保障。本文将详细介绍Java沙箱模型的核心组成部分,并深入探讨类装载器、类文件校验器的作用及其在Java安全体系中的地位。 #### Java...
Java沙箱是一种安全机制,用于限制代码的执行权限,防止不受信任的代码损害系统。在Java应用程序中,尤其是Web应用和移动应用,沙箱限制了代码对敏感资源的访问,如文件系统、网络和操作系统API。然而,恶意代码可能...
最后,手册可能还会讨论一些高级主题,如Java沙箱机制、混淆和反混淆技巧,以及如何进行安全的代码审计和漏洞扫描。这些内容可以帮助开发者提升代码的隐蔽性和安全性,并检测出潜在的安全风险。 总之,《Java安全...
对于Java开发者来说,了解如何编写安全的代码、识别和防止代码注入攻击、理解Java沙箱机制以限制潜在恶意代码的执行,以及如何应用最新的安全补丁和更新都是非常关键的知识点。 压缩包内的"SCJP 6.rtf"文件名称表明...
7. **Java沙箱机制**:Java的沙箱环境限制了未签名或不受信任的代码执行的权限,防止其对系统造成破坏。 8. **安全编码实践**:避免SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)等常见攻击,需要开发者遵循良好...
由于Applet运行在用户的机器上,出于安全考虑,Java沙箱机制限制了其对本地资源的访问权限。因此,Applet可能无法执行某些需要高权限的操作,如读写文件或访问网络。 7. **替代技术**: 随着Web技术的发展,...
Java沙箱机制限制了Applet的权限,防止恶意代码对用户的系统造成损害。 10. **部署与嵌入**:将Applet游戏部署到网页上,需要用到HTML的标签,指定Applet的类名和参数。随着HTML5的普及,现代浏览器逐渐淘汰了对...
Java的安全机制是其独特优势之一,它通过一系列的内置安全特性确保了应用程序的稳定性和安全性。本文基于给定的文件信息,深入探讨Java安全机制的关键组成部分及其运作原理。 ### Java安全机制的体系结构 Java安全...
Java沙箱,正如标题“java-sandbox”所示,是一个安全的环境,用于实验和测试Core Java的相关特性。在计算机安全领域,沙箱是一种技术,它允许程序运行在受限制的环境中,防止它们对系统造成潜在的危害。对于Java,...
1. Java沙箱机制:理解Java的沙箱模型,防止恶意代码的执行。 2. 输入验证:强化输入验证,防止SQL注入、跨站脚本等常见攻击。 3. 安全编码实践:遵循最佳安全编码原则,减少程序中的安全漏洞。 综上所述,政企在...
在IT行业中,安全沙箱是一种重要的安全机制,用于限制应用程序的权限,防止它们对系统造成潜在的危害。在 Flash 技术中,安全沙箱的概念尤为关键,因为它允许 Flash 内容在网页上运行,同时限制了其对用户计算机的...
- **安全性保障**:通过沙箱机制等手段,JVM提供了强大的安全保护措施,防止恶意代码对系统的破坏。 #### 3. 类加载器(ClassLoader) 类加载器是JVM的重要组成部分之一,它负责将Java类加载到内存中,并对其进行...
Java通过沙箱模型实现了这一目标,该模型将代码限制在一个安全区域内运行,防止恶意代码访问敏感资源或执行危险操作。此外,Java还引入了签名机制来验证代码的身份和完整性,从而增强系统的安全性。 #### 四、Java...
安全沙箱是Flash Player为了防止恶意代码对用户的系统造成危害而实施的一种安全机制。它将Flash内容分为不同的沙箱,如本地沙箱、网络沙箱等,限制了不同沙箱之间的交互。对于Socket通信,AS中的Socket类只能连接到...
"Java生态圈沙箱逃逸实战"的主题聚焦于如何保护Java应用程序免受恶意攻击,以及攻击者如何尝试绕过安全机制进行沙箱逃逸。沙箱是一种安全机制,用于限制代码执行权限,防止不受信任的代码对系统造成破坏。 首先,...
# 基于Docker和Java的代码沙箱系统 ## 项目简介 本项目是一个基于Docker和Java的代码沙箱系统,旨在提供一个安全、隔离的环境来执行用户提交的代码。系统支持Java代码的编译和执行,并提供了多种安全机制来防止...
在Java EE中,沙箱机制主要体现在容器对应用程序的管理和控制上。容器是Java EE平台的核心组成部分,它负责加载、配置、运行和管理Java EE组件,如Servlet、EJB(Enterprise JavaBeans)、JMS(Java Message Service...
本文将详细介绍如何使用Java语言进行支付宝的沙箱测试,包括付款、交易查询、退款、退款查询以及交易关闭等操作,并讨论对账单下载的重要性和具体实现。 首先,我们需要理解“沙箱测试”是什么。沙箱环境是支付宝为...
为了保护云上的用户免受恶意攻击,如DDoS(分布式拒绝服务)和旁注攻击,SAE实施了一系列的安全限制,尤其是对于Java应用程序,它采用了安全沙箱机制来限制可能有害的函数调用。 Java的安全沙箱是一种机制,它允许...
Firehunter沙箱能够检测文件类型,包括Windows可执行文件、EXE、dll、WEB网页、Javascript、Flash、JavaApplet等各种办公文档、图片文件、压缩文件等。 Firehunter沙箱的智能行为综合分析包括:文件附加数据识别、...