我可以以自动删除其权限的方式加载Java类吗?

我正在开发一个库,需要实例化并返回从外部网站下载的不受信任的对象.在高级别,图书馆的工作原理如下:

>库的客户端从远程源请求类.

>我的库实例化该对象,然后将其返回给用户.

这是一个主要的安全风险,因为不受信任的代码几乎可以做任何事情.为了解决这个问题,我的库有以下设计:

>我启用了SecurityManager,并且在实例化不受信任的对象时,我使用AccessController来处理没有特权的上下文中的实例化.

>在将对象返回给客户端之前,我将对象包装在装饰器中,该装饰器使用AccessController将所有方法请求转发到底层对象,以确保不受信任的代码永远不会以任何权限运行.

但是,我发现这可能不是最优雅的解决方案.从根本上说,我想从远程源下载的任何类型的任何对象中删除所有权限.我目前使用AccessController只是一种通过拦截所有请求并在执行它们之前删除权限来伪造它的方法. AccessController方法也有自己的问题:

>如果包装对象具有任何返回对象的方法,那么返回的对象必须自行包装.

>包装器代码可能长达数千行,因为必须保护每个导出的方法.

>必须事先知道下载对象导出的所有方法才能被包装.

我的问题是:有没有办法将类加载到JVM中(可能使用自定义的ClassLoader),以便这些类的任何实例在没有权限的情况下执行其方法?

谢谢!

原文 

https://codeday.me/bug/20190111/501407.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 我可以以自动删除其权限的方式加载Java类吗?

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址