程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java脚本(JRuby,Jython,Groovy,BeanShell等)的安全性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Java脚本(JRuby,Jython,Groovy,BeanSHell等)的安全性?

开发过程中遇到Java脚本(JRuby,Jython,Groovy,BeanSHell等)的安全性的问题如何解决?下面主要结合日常开发的经验,给出你关于Java脚本(JRuby,Jython,Groovy,BeanSHell等)的安全性的解决方法建议,希望对你解决Java脚本(JRuby,Jython,Groovy,BeanSHell等)的安全性有所启发或帮助;

免责声明:我不是Java安全API的专家,因此可能会有更好的方法来做到这一点。

我为基于Java的开源企业CMSAlfresco工作,我们实现了与您所描述的类似的东西。我们希望允许脚本编写,但仅向脚本引擎公开Java API的子集。

我们选择Rhino ENGIne进行JavaScript脚本编写。它允许您控制哪些API可以使用JavaScript,还可以选择哪些类可用,哪些不可用。根据我们的工程师,间接费用大约为10%-不错。

除此之外,这也与您有关,在Java方面,我们使用Acegi(现在称为Spring Security),并使用AOP对特定用户可以调用的方法进行基于角色的控制。授权非常有效。因此,实际上,首先通过JavaScript访问@R_112_9616@程序的用户首先具有受限制的API,然后可以根据授权进一步限制该API。因此,您可以使用AOP技术进一步限制可以调用的方法,从而允许在其他脚本语言(例如Groovy等)中公开该方法。我们也正在添加这些方法,并确信我们的底层Java API保护用户免受未经授权的访问。

解决方法

我希望运行一些未经验证的脚本(以尚未确定的语言编写,但是需要基于Java,因此JRuby,Groovy,Jython,BeanSHell等都是候选人)。我希望这些脚本能够执行某些操作,并限制执行其他操作。

通常,我只是去使用Java的Securitymanager并完成它。这非常简单,可以让我限制文件和网络访问,关闭JVM的能力等。这对于我想阻止的高级任务非常有用。

但是有些事情我想允许的,但只能通过我提供的自定义API
/库来实现。例如,我不想允许直接的网络访问来打开到yahoo.com的URLConnection,但是如果使用MyURLConnection完成,则可以。那就是-
我要允许一组方法/类,然后我要限制的所有其他事情。

我不相信这种类型的安全性可以通过标准Java安全性模型来完成,但也许可以。我对脚本语言本身没有性能或灵活性的特定要求(这些脚本将是对具有基本循环/分支功能的API的简单过程调用)。因此,即使是用于检查每个反射调用的安全性检查的“大”开销对我来说也很好。

有什么建议吗?

大佬总结

以上是大佬教程为你收集整理的Java脚本(JRuby,Jython,Groovy,BeanShell等)的安全性全部内容,希望文章能够帮你解决Java脚本(JRuby,Jython,Groovy,BeanShell等)的安全性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。