velocity 是如何实现introspector 自醒来屏蔽反射的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了velocity 是如何实现introspector 自醒来屏蔽反射的相关的知识,希望对你有一定的参考价值。

velocity的标签中支持$abc 这样的语法,如果abc是一个对象,则写模板时就可以利用它来进行反射,调用一些危险的方法,如

$vm.getClass().newInstance()
#set ($exec = "kxlzx")$exec.class.forName("java.lang.Runtime").getRuntime().exec("calc")

通过反射,让系统本身出现了安全漏洞,这类危险的操作,可以通过屏蔽反射来杜绝,在velocity属性中添加一行配置即可

runtime.introspector.uberspect = org.apache.velocity.util.introspection.SecureUberspector

本文主要讨论velocity如果通过它来屏蔽反射,达到自醒(只能使用getter/setter,普通方法),欢迎补充。


以上是关于velocity 是如何实现introspector 自醒来屏蔽反射的的主要内容,如果未能解决你的问题,请参考以下文章

如何在悬停中使用velocity.js?

如何让spring5.x支持velocity

如何让spring5.x支持velocity

如何在悬停中使用velocity.js?

Velocity魔法堂系列三:模板与宿主环境通信

Velocity