首页 > Java Class SecurityManager

Java Class SecurityManager

# 前言

 

简单了解 SecurityManager。具体查阅 API。

 

# What

 

它是 Java 沙盒模型控制安全的重要一个环节。它是 Java 的一个类。下面一段话源于SecurityManager API:

 

The security manager is a class that allows applications to implement a security policy. It allows an application to determine, before performing a possibly unsafe or sensitive operation, what the operation is and whether it is being attempted in a security context that allows the operation to be performed. The application can allow or disallow the operation.

 

安全管理器是一个类,允许应用实现一个安全策略。在执行一项可能不安全或者敏感操作之前,它允许应用去确定这个操作的内容以及这个操作是否允许去修改安全上下文。这个应用可也允许或者阻止该行为。

 

简单的说,他规定了权限,类访问权限,文件访问权限等等,范围很广,你能想到的,它都有。只要在命令行运行时附加参数,或者在程序运行前设置该类即可。

 

# Why

 

至于使用这个类作为安全机制的原因:Java 原生安全机制,对于简单应用,为什么不用?

 

至于使用场合,比如恶意的反射:

假设有个安全控制类:

public class Security {boolean security = true;


// 我是 private 方法,我不想被外人访问!
private void changeSecurity() {security = false;}public boolean getSecurity() {return security;}}

然后黑客想要修改安全:

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;public class Main {public static void main(String[] args) { Class securityClass = Security.class;try {Security security = (Security) securityClass.newInstance();Method method = securityClass.getDeclaredMethod("changeSecurity");method.setAccessible(true); // 让我访问 private 方法System.out.println("Security level: " + security.getSecurity());method.invoke(security);System.out.println("Security level: " + security.getSecurity());} catch (Exception e) {e.printStackTrace();}}}

这是很邪恶的,一下子就把安全选项给关闭了。

 

# How

 

然而阻止黑客这么做很简单,附加 SecurityManager 禁用反射即可:

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;public class Main {public static void main(String[] args) {System.setSecurityManager(new SecurityManager()); // 设置了 SecurityManagerClass securityClass = Security.class;try {Security security = (Security) securityClass.newInstance();Method method = securityClass.getDeclaredMethod("changeSecurity");method.setAccessible(true);System.out.println("Security level: " + security.getSecurity());method.invoke(security);System.out.println("Security level: " + security.getSecurity());} catch (Exception e) {e.printStackTrace();}}
}

 

 # Reference

 

http://docs.oracle.com/javase/8/docs/api/java/lang/SecurityManager.html SecurityManager API

 

转载于:https://www.cnblogs.com/Piers/p/6600855.html

更多相关:

  • 把以下内容加在web.config的节点

  • 互联网快速发展,云服务早已融入每一个人的日常生活,而互联网安全与互联网的发展息息相关,这其中涉及到信息的保密性、完整性、可用性、真实性和可控性。又拍云上线了与多家国际顶级 CA 机构合作的数款OV & EV SSL证书,提供一站式HTTPS安全解决方案,让安全触手可及。   HTTPS加密时代,SSL证书肩负网络安全重任 HTTP协...

  • 云计算安全:技术与应用中国电信网络安全实验室 编著ISBN 978-7-121-14409-72012年1月出版定价:59.00元16开236页宣传语:全面了解云计算安全风险、安全防护手段的佳作!内 容 简 介随着云计算的兴起,安全成为云计算能否顺利落地的关键问题。作者从多年的实践经验出发,对云计算的技术安全与应用作了实证的分析与...

  • 几乎所有企业对于网络安全的重视程度一下子提高了,纷纷采购防火墙等设备希望堵住来自Internet的不安全因素。然而,Intranet内部的攻击和入侵却依然猖狂。事实证明,公司内部的不安全因素远比外部的危害更恐怖。   大多企业重视提高企业网的边界安全,暂且不提它们在这方面的投资多少,但是大多数企业网络的核心内网还是非常脆弱的。企业也对...

  • 下面讲解如何通过×××路由器来实现跨网段访问 首先设备的选购: 选择2台tplink r6110或者6120系列 实战技术: 设置步骤: 一)、基本设置: 1、设置路由器的WAN口模式:基本设置→WAN口设置,进入“WAN口模式”标签页,根据需求设置WAN口数量,此处我们选择为“单WAN口”,保存。 2、设置WAN口网络参数:基本...