携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
上篇文章我们了解了一下中断,本篇文章我们来聊聊线程中的代码安全,任何中间件提供给调用方,你怎么保证你的中间件不会出问题呢?我们需要对线程中的代码进行保护,java给我们提供了对应的访问控制,一起来玩一下。
模拟第三方调用我们的组件
假设我们提供的jar包是这个,然后我们对外提供一个抽象方法给业务方实现,那假如说业务方在实现的时候,执行了一些恶意代码,那我们就需要对这类代码添加访问控制。
访问控制
我们需要对代码进行访问控制,那怎么控制呢?就用到java的安全类AccessControlContext,他的英文注释显示它可以对系统资源做一些访问上的决策,那我们就需要构造一个这样的类出来:
英文数字告诉我们需要构造一个保护域的数组。
如果我们不明白怎么给保护域数组初始化,那可以参考一下源码里的写法:
那我们还需要初始化一个保护域,然后放入保护域的数组中,同样,保护域的初始化我们也可以参考:
代码就写成了这个样子:
然后,我们把要保护的方法放到这里面的run方法里去就可以了
我们还需要指定一下我们配置的访问上下文:
测试代码
最后需要把安全管理器也加上,好,我们测试下代码:
好,接下来,我们看一下效果,好,访问拒绝,实验成功: