分享好友 最新动态首页 最新动态分类 切换频道
keywordspy网站做分析/上海seo网站排名优化公司
2024-12-26 20:05

关于SecurityManager的细节本文章不做介绍,主要聚集在场景搭建以及核心流程的代码跟踪,理解其设计思路。

keywordspy网站做分析/上海seo网站排名优化公司

主要验证System.getSecurityManager().checkSecurityAccess(“a.b.c”)的三个场景

  • 与MainClass在同一个module
  • 与MainClass在不同的module
  • 在另一个jar包中

分别新增A、B、C、SecurityManagerTest四个类

ClassPositionDescribeAmodule: learn-main与Main class SecurityManagerTest在同一个moduleBmodule: learn-module在单独一个moduleCjar: com.saleson:personal:1.0-SNAPSHOT.jar在jar包中SecurityManagerTestmodule: learn-mainmain class

A、B、C三个类的代码是一样的,仅是输出的日志为了区分会有调整,代码如下

 

security.policy内容如下

 

SecurityManagerTest类代码

 

在debug SecurityManagerTest类时,添加jvm参数:

-Djava.security.manager -Djava.security.policy=/Users/saleson/IdeaProjects/learn/learn-main/src/main/java/com/saleson/learn/java/security/security.policy

全部正常执行

运行 SecurityManagerTest类,全部正常执行完成,输出如下

 

grant1 注释掉

运行 SecurityManagerTest类,在执行A.print()时会抛错,输出如下

 

A.print()无法执行

grant1 和 A.print() 注释掉

把SecurityManagerTest类中的代码调整下

 

运行 SecurityManagerTest类,在执行A.print()时会抛错,输出如下

 

将SecurityManagerTest的代码再调整下,print() 改为 print(false), 仍能正常执行

 

运行 SecurityManagerTest类,输出如下

 

为啥能正常执行了呢,这是因为AccessController.doPrivileged(),再重新看下B.print()方法

 

后面的节章会从代码debug的视角对比有无使用AccessController.doPrivileged()的区别。

grant2 和 grant3 注释掉之后执行结果类似。

  • codeSource
    代码源,该对象是由ClassLoader生成,ClassLoader读取class和jar包得知类的所在目录或者jar包路径、签名者以及证书等。
 
  • ProtectionDomain
    从类名就可以看出来这是保护域对象,它内部包含了CodeSource、PermissionCollection。

想了解更多相关内容可以查阅java之jvm学习笔记十(策略和保护域) 进行了解。

下面主要从debug的视角跟踪AccessController、AccessControlContext、SecurityPermission进行对比和理解。

在SecurityManagerTest.main()方法中改为C.print(false),采用AccessController.doPrivileged(PrivilegedAction)的方式进行调用。

 

print() 方法

 
 
 

在执行SecurityPermission.implies(Permission)方法之前,会先在BasicPermissionCollection.implies(Permission)方法中找到匹配的Permission。

BasicPermissionCollection.implies(Permission)代码逻辑

 

找到之后再调用Permission.implies(Permission)。

SecurityPermission类的逻辑都在其父类BasicPermission中,BasicPermission在构造方法中会init()进行简单的解析

  1. 先判断后缀是否为*
  2. 如果是则对path进行处理,例如name = “x.x.*”
    wildcard = true
    path = “x.x.”

BasicPermission.init(String)

 

BasicPermission.implies(Permission)方法也是一个简单的对比逻辑

 

SecurityPermission的使用案例

在SecurityPermission的构造参数中仅有name参数会参与到对比计算中,但是name支持’*'这个通配符;在使用时可以在.policy文件中配置

 

在check时,可以将name以’.'进行任意的组合用于检测

 
 
最新文章
请问2023年python真的赚钱吗?什么程度可以接单?
python真的赚钱吗? python有技术,有个人资源,有客户资源就很赚钱。Python是一种一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释
被OpenAI带火的强化微调RFT技术解析~
OpenAI年终大戏第二场推出了强化微调RFT (Reinforcement Fine-Tuning),它可以让你用几十到几千个的训练数据,为特定的复杂任务构建专家模型,加强了模型如何处理类似问题的推理,微调后的o1-mini得分提高80%ÿ
超实用的外贸网络营销工具
以下是一些目前我在用的或者已经用过的外贸网络营销工具,介绍和推荐一下。注:以下工具的网站多数位于国外,从国内访问可能稍微有些慢。如果长时间打不开网站,建议使用过墙工具,有些网站在墙外,你懂的。WordPress: 无论是建网站还是建
韩漫漫画免费读,下拉式土豪漫画,精彩内容等你发现
在这个数字化的时代,漫画作为一种流行的文化形式,吸引了无数读者的喜爱。而韩漫漫画更是以其独特的风格和精彩的剧情,在全球范围内赢得了众多粉丝。今天,我将为大家推荐一些免费阅读韩漫漫画的网站,让你尽情享受下拉式土豪漫画的精彩内
超逼真美女写真生成,AI工具评测与实用教程来了!
在这个数字艺术迅猛发展的时代,AI绘画工具如雨后春笋般崛起,能生成超逼真的图像,甚至让你的大脑无法分辨其真实与虚构。或许宝子们也好奇,如何利用这些神奇的技术制作出自己的“AI女友”或者“艺术照”?别着急,今天我们就深入探讨几款
谷歌发布 AI 图像生成新工具 Whisk,支持上传多张图片以图生图
谷歌今日发布了一款名为 Whisk 的全新 AI 图像生成工具,该工具允许用户使用其他图像作为提示来生成图像,而不需要冗长的文本提示。用户只需提供图像,即可指定 AI 生成图像的主题、场景和风格。使用 Whisk 时,用户可以为主题、场景和风格
百度推广高效获客策略,质量优化技巧全解析
百度推广质量优化技巧,助企业高效获客。通过精准关键词、高质量创意和优化着陆页,提升广告质量度,降低成本,提高率。利用百度推广数据分析,持续优化策略,实现广告效果最大化。随着互联网的普及,越来越多的企业开始借助进行品牌宣传和
追星人的2024是由什么组成的...
2024余额不足...属于追星人的2024是什么样的?是风雨无阻奔赴的46场现场,足迹遍布全世界;是内存报警却一张都不舍得删的50G视频,每一帧都是回忆...追星人的2024是这么构成的。为了收藏那些日子,也为了记录你的成长:网易云音乐 × 文小
高清美女写真生成攻略-用AI工具轻松打造我的AI女友
步骤2:选择模板在首页,浏览各类模板。可以根据您的需求选择适合的风格,如清新、性感、二次元等。步骤3:上传照片选择生成照片后,您可以上传自己的照片,AI会自动识别您的面部特征,为您生成专属的美女画像。步骤4:调整美化根据预生成
美诺油烟机24小时人工400电话/专业快速响应 - 行业 - 百科知识-蓝心网
美诺油烟机售后24小时维修服务热线:400-658-8618。美诺油烟机全市各区售后服务点热线号码。☎:400-658-8618美诺油烟机售后服务,秉承“诚信为本、客户至上”的服务态度和“以客户为中心”的服务指导思想,不仅真诚地为用户提供先进、高质
相关文章
推荐文章
发表评论
0评