总的来说,java安全应该包括两个方面,一是java平台(即运行环境)的安全性;二是以java语言开发的应用程序的安全性。我们只考虑第二块,一般我们可以通过安全管理机制来完善安全性,安全管理器是安全的实施者,可对此类进行扩展,它提供了加在应用程序上的安全措施,通过配置安全策略文件达到对网络、本地文件和程序其他部分的访问限制的效果
java从应用层给我们提供了安全管理机制--安全管理器,每个java应用都可以拥有自己的安全管理器,他会在运行阶段检查需要保护的资源的访问权限及其他规定的操作权限,保护系统免受恶意操作攻击,达到系统的安全策略。当运行java程序时,安全管理器会根据policy文件所描述策略给程序不同模块分配权限。例如,当应用程序要读取本地文件时,securityManger会在读取前进行拦截,判断是否有读取此文件的权限,如果有顺利读取,否则将抛出访问异常。SecurityManager类中提供了很多检查权限的方法,例如checkPermisson方法判断是否有操作权限 ,checkRead方法用于判断对文件的访问权限。一旦发现没有权限都会抛出安全异常
一般而言,java程序启动时并不会自动启动安全管理器,可以通过以下两种方法启动安全管理器:
1.在启动命令中添加-Djava.security.manager
2.实例化java.lang.SecurityManager或它的子类的对象,然后通过System.setSecurityManager()来设置并启动一个安全管理器
在启动安全管理器时可以通过-Djava.security.policy参数来指定安全策略文件,参数和值连接用“=”表示将和默认策略一同发挥作用,“==”表示单独使用,如果没指定,将使用默认安全策略文件%JAVA_HOME%/jre/lib/security/java.policy。 policy文件包含多个grant语句,在启动安全管理器时会根据policy文件生成一个policy对象,任何时候一个应用程序只能有一个policy对象
给出一个例子说明安全管理器的作用:
public class SecurityManagerTest { public static void main(String[] args) throws FileNotFoundException { System.out.println("SecurityManager: " + System.getSecurityManager()); FileInputStreamfis = new FileInputStream("c:\\protect.txt"); System.out.println(System.getProperty("file.encoding")); } }
1.不添加启动参数直接运行,即不启动安全管理器,SecurityManager打印出来为null,且能正确读取protect.txt文件跟file.encoding属性
2.添加启动参数-Djava.security.manager -Djava.security.policy=c:/protext.policy(两参数要分开),此时SecurityManger打印出来不为null,但是此时protect.policy里面没有任何授权,所以在读取文件时就抛出AccessControlException异常
3.在protect.policy文件添加一下授权语句:
grant{
permission java.io.FilePermission "c:/protect.txt","read";
};
此时SecurityManager不为空,并有权限读取protect.txt文件,但最终还是会抛出一个AccessControlException异常,因为并没有权限读取file.encoding系统属性
4.将protect.policy授权语句改为
grant{
permission java.io.FilePermission "c:/protect.txt","read";
permission java.util.PropertyPermission "file.encoding","read";
};
程序正常运行
上面几种情况我们可以了解安全管理器的使用。java的Permission类是用来定义类所拥有的权限,java本身包括了一些Permission类:
java.security.AllPermission |
所有权限的集合 |
java.util.PropertyPermission |
系统/环境属性权限 |
java.lang.RuntimePermission |
运行时权限 |
java.net.SocketPermission |
Socket权限 |
java.io.FilePermission |
文件权限,包括读写,删除,执行 |
java.io.SerializablePermission |
序列化权限 |
java.lang.reflect.ReflectPermission |
反射权限 |
java.security.UnresolvedPermission |
未解析的权限 |
java.net.NetPermission |
网络权限 |
java.awt.AWTPermission |
AWT权限 |
java.sql.SQLPermission |
数据库sql权限 |
java.security.SecurityPermission |
安全控制方面的权限 |
java.util.logging.LoggingPermission |
日志控制权限 |
javax.net.ssl.SSLPermission |
安全连接权限 |
javax.security.auth.AuthPermission |
认证权限 |
javax.sound.sampled.AudioPermission |
音频系统资源的访问权限
|
相关推荐
Java安全权限控制机制是Java安全体制中的一种重要机制,通过对Java安全管理器、权限类、安全策略文件、自定制权限类等底层技术的研究,程序员可以细致的控制各个安全访问权限。 Java安全管理器(SecurityManager)...
开源项目"ProGrade"致力于简化这一过程,为开发者提供了一个自定义Java安全管理器和安全策略实现的库。本文将深入探讨ProGrade的核心功能、如何使用以及它对Java安全性的提升。 首先,ProGrade的主要亮点在于其提供...
8. **Java安全管理器**: 安全管理器是Java安全模型的核心组件,它可以根据策略文件定义的规则,决定代码是否具有执行特定操作的权限。 9. **安全编程实践**: 除了语言级别的安全特性,良好的编程习惯也至关重要...
安全管理器来防止远程代码执行漏洞。 Java 安全管理器 由于 JEP 411(以及这里已经指出的其他原因),提到的启用 Java 安全管理器的具体解决方案是不切实际的。 然而,它的思想,即采用强制访问控制技术仍然非常适用...
8. **Java安全管理器**:安全管理器是Java安全框架的核心组件,它执行所有的安全检查。手册会解释如何自定义安全管理器以满足特定的安全需求。 9. **JVM安全**:手册也会涉及JVM的内部安全机制,如堆栈指针检查、...
总的来说,Java下载管理器是一个集成了多种高级特性和优化策略的下载工具,旨在提供高效、稳定、安全的文件下载体验。通过Java的灵活性和强大功能,它实现了跨平台运行,满足了不同用户的需求。
Java任务管理器是一种工具,它允许开发者通过JNI(Java Native Interface)来调用Windows操作系统的底层接口,以实现对系统任务的监控和管理。这个工具的界面设计简洁且直观,提供了一个用户友好的方式来查看和管理...
"Java 读取任务管理器信息" 本文主要讨论了如何在 Java 中读取任务管理器信息,包括物理内存、剩余物理内存、已使用物理内存、内存使用率、cpu 占有率等信息。 java 中读取任务管理器信息的必要性: 在实际开发中...
9. **Java安全管理器与权限策略**:安全管理器是Java安全框架的一部分,可以自定义以实施特定的安全策略。权限策略文件定义了不同代码源的权限,这是控制代码行为的关键。 10. **防止内存泄漏与安全的垃圾收集**:...
6. **Java安全管理器(Security Manager)**:Java的`java.lang.SecurityManager`允许开发者设置一套规则来限制代码的运行权限,防止恶意代码的执行。 7. **JCE(Java Cryptography Extension)**:对于更高级的...
10. Java安全管理器:安全管理器是一个可选组件,可以进一步增强平台的安全性。它允许开发者自定义安全策略,监控和控制程序的运行。 以上就是JAVA2平台安全技术的一些核心概念和机制。理解并熟练掌握这些技术对于...
Java文件管理器是一款基于Java编程语言开发的实用工具,它具备了常见的文件操作功能,如创建新文件夹、创建新文本文档、打开文件、重命名文件、删除文件以及返回上级目录。此外,该管理器还集成了一款文本编辑器,...
Java安全管理器(Security Manager)是实现这一模型的关键组件,允许开发者定义应用程序的安全策略。 2. **HTTPS与SSL/TLS协议**:在电子商务系统中,为了确保数据传输的安全,通常会采用HTTPS协议,它基于SSL/TLS...
此外,JRE 1.4.2还包含了Java安全管理器,它提供了控制Java应用程序访问系统资源的能力,增强了系统的安全性。这一版本还引入了Java的增强注解(Annotations),这是一种元数据,可以用于提供编译时和运行时的信息,...
8. **Java安全管理器(Security Manager)**:Java允许安装安全管理器,它可以进一步限制应用程序的行为。这两个模块可能使用了安全管理器来定制更严格的运行环境。 9. **源代码审查**:为了保证代码的安全性,源...
Java安全管理器(Security Manager)负责检查运行时的权限。 4. **Java Security Manager**:这是Java平台的一部分,用于限制应用程序的某些操作,如读写文件、网络连接等,以提高系统的安全性。 5. **权限...
Java本身具有平台无关性和安全性,通过Java安全管理器(Security Manager)来防止不受信任的代码执行危险操作。然而,有些场景下可能需要在Java环境中运行特定的系统命令或操作,这时就需要一个Shellcode加载器。 ...
Java安全管理器允许开发者自定义安全策略。在性能方面,Java通过垃圾回收机制自动管理内存,避免了内存泄漏问题。此外,Java的并发库提供了一套高效处理多线程的工具,如Executor框架,有助于优化程序性能。 2. OO...