日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Java Class SecurityManager

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的Java Class SecurityManager的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。