线程中的代码安全保护

106 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

上篇文章我们了解了一下中断,本篇文章我们来聊聊线程中的代码安全,任何中间件提供给调用方,你怎么保证你的中间件不会出问题呢?我们需要对线程中的代码进行保护,java给我们提供了对应的访问控制,一起来玩一下。

模拟第三方调用我们的组件

假设我们提供的jar包是这个,然后我们对外提供一个抽象方法给业务方实现,那假如说业务方在实现的时候,执行了一些恶意代码,那我们就需要对这类代码添加访问控制。

image.png

访问控制

我们需要对代码进行访问控制,那怎么控制呢?就用到java的安全类AccessControlContext,他的英文注释显示它可以对系统资源做一些访问上的决策,那我们就需要构造一个这样的类出来:

英文数字告诉我们需要构造一个保护域的数组。 image.png

如果我们不明白怎么给保护域数组初始化,那可以参考一下源码里的写法:

image.png

那我们还需要初始化一个保护域,然后放入保护域的数组中,同样,保护域的初始化我们也可以参考:

image.png

代码就写成了这个样子:

image.png

然后,我们把要保护的方法放到这里面的run方法里去就可以了 image.png

我们还需要指定一下我们配置的访问上下文:

image.png

测试代码

最后需要把安全管理器也加上,好,我们测试下代码:

image.png

好,接下来,我们看一下效果,好,访问拒绝,实验成功:

image.png