如何禁止访问未被共享出来的java类

自己开发的一个项目允许用户自己写模板,但是这样用户就可以访问java中所有包含静态方法的类,也许因为一个失误导致某个存在隐患的静态方法被调用就会造成灾难,所以能不能限制,只可以访问share的那些类,自己share的那些静态方法足够使用了

评论区

JFinal

2018-09-13 23:48

jfinal enjoy 内部已经对一部分重要的类、方法做了安全限制,不允许访问

MethodKit 里面有一个 addForbiddenMethod(String methodName) 可以添加不允许访问的方法

jfinal 3.5 还添加了一个 addForbiddenClass(...) ,可以添加不允许访问的 class

你可以试试现在的功能,例如: #(obj.getClass())
会发现这个是不允许的

JFinal

2018-09-13 23:49

此外, 既然你允许用户能自己添加模板文件,而模板文件可以实现动态功能,一般情况这些人是要被授权的,而被授权的人一定是要有一定的信任度的,不能乱来

netwild

2018-09-14 09:49

“但是这样用户就可以访问java中所有包含静态方法的类”

没有shareMethod或者shareObject的静态方法在模板中如何引用?

杜福忠

2018-09-14 21:45

@netwild
http://www.jfinal.com/doc/6-3
5、静态方法调用
#if(com.jfinal.kit.StrKit::isBlank(title))
....
#end

netwild

2018-09-14 22:07

@杜福忠 这段没仔细看,果然是这样,3Q~
我感觉这种设计说不上好还是不好
对于封闭的系统肯定更方便了
但对于开放的二开系统应该加以限制
希望对双冒号的支持可配置,这样就灵活了

Dull

2018-09-15 12:11

@netwild 是的,对于开放系统就存在很大隐患