💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
* **JVM注解@CallSensitive** @CallSensitive是JVM中专用的注解,在类加载过过程中是可以常常看到这个注解的身影的,@CallSensitive用来找到真正发起反射请求的类 @CallSensitive的使用 ``` @CallerSensitive public static Class<?> forName(String className) throws ClassNotFoundException { Class<?> caller = Reflection.getCallerClass(); return forName0(className, true, ClassLoader.getClassLoader(caller), caller); } ``` 注意:Reflection.getCallerClass\(\)方法调用所在的方法必须用@CallerSensitive进行注解 _**这个注解是为了堵住漏洞用的。曾经有黑客通过构造双重反射来提升权限,原理是当时反射只检查固定深度的调用者的类,看它有没有特权,例如固定看两层的调用者(getCallerClass\(2\))。如果我的类本来没足够权限群访问某些信息,那我就可以通过双重反射去达到目的:反射相关的类是有很高权限的,而在 我-&gt;反射1-&gt;反射2 这样的调用链上,反射2检查权限时看到的是反射1的类,这就被欺骗了,导致安全漏洞。使用CallerSensitive后,getCallerClass不再用固定深度去寻找actual caller(“我”),而是把所有跟反射相关的接口方法都标注上CallerSensitive,搜索时凡看到该注解都直接跳过,这样就有效解决了前面举例的问题**_ _**参考资料**_ [https://blog.csdn.net/HEL\_WOR/article/details/50199797](https://blog.csdn.net/HEL_WOR/article/details/50199797)