马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
什么是Java安全管理器?
Java安全管理器是Java提供的掩护JVM和程序安全的机制,它能限定用户的代码对文件、内存、资源、网络的操纵和访问,防止恶意代码入侵程序。常用来控制用户提交的代码对各种资源的访问权限,防止用户恶意提交代码导致系统崩溃或数据泄露。
Java安全管理器的优缺点
优点:
权限控制灵活
实现简朴
缺点:
控制粒度太细,难以精细化控制
本质上是在程序上做控制,没有深入到系统的层面
如何使用Java安全管理器?
创建安全管理器
新建一个自定义的安全管理器类,继续SecurityManager类,再重写父类中的方法实现各种权限的控制,如:
1、以是权限放开
- import java.security.Permission;
- /**
- * 默认安全管理器
- */
- public class DefaultSecurityManager extends SecurityManager {
- // 检查所有的权限
- @Override
- public void checkPermission(Permission perm) {
- System.out.println("默认不做任何限制");
- System.out.println(perm);
- // super.checkPermission(perm);
- }
- }
复制代码 2、所有权限拒绝
- import java.security.Permission;
- /**
- * 禁用所有权限安全管理器
- */
- public class DenySecurityManager extends SecurityManager {
- // 检查所有的权限
- @Override
- public void checkPermission(Permission perm) {
- throw new SecurityException("权限异常:" + perm.toString());
- }
- }
复制代码 3、限定读权限
- @Override
- public void checkRead(String file) {
- throw new SecurityException("checkRead 权限异常:" + file);
- }
复制代码 4、限定写权限
- @Override
- public void checkWrite(String file) {
- throw new SecurityException("checkWrite 权限异常:" + file);
- }
复制代码 5、限定执行文件权限
- @Override
- public void checkExec(String cmd) {
- throw new SecurityException("checkExec 权限异常:" + cmd);
- }
复制代码 6、限定网络权限
- @Override
- public void checkConnect(String host, int port) {
- throw new SecurityException("checkConnect 权限异常:" + host + ":" + port);
- }
复制代码 指定安全管理器
创建完自定义的安全管理器之后,我们需要再程序中指定使用它,如:
- import cn.hutool.core.io.FileUtil;
- import java.nio.charset.Charset;
- /**
- * 测试安全管理器
- */
- public class TestSecurityManager {
- public static void main(String[] args) {
- System.setSecurityManager(new MySecurityManager());
- FileUtil.writeString("aa", "aaa", Charset.defaultCharset());
- }
- }
复制代码 也可以通过命令行的方法指定,如:
- java -Dfile.encoding=UTF-8 -cp %s;%s -Djava.security.manager=MySecurityManager Main
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |