这个注解是为了堵住漏洞用的。曾经有黑客通过构造双重反射来提升权限,原理是当时反射只检查固定深度的调用者的类,看它有没有特权,例如固定看两层的调用者(getCallerClass(2))。如果我的类本来没足够权限群访问某些信息,那我就可以通过双重反射去达到目的:反射相关的类是有很高权限的,而在 我->反射1->反射2 这样的调用链上,反射2检查权限时看到的是反射1的类,这就被欺骗了,导致安全漏洞。使用CallerSensitive后,getCallerClass不再用固定深度去寻找actual caller(“我”),而是把所有跟反射相关的接口方法都标注上CallerSensitive,搜索时凡看到该注解都直接跳过,这样就有效解决了前面举例的问题
jvm注解 @CallerSensitive的用处
最新推荐文章于 2023-05-03 22:28:50 发布
博客介绍了CallerSensitive注解的作用,黑客曾利用双重反射构造调用链欺骗反射权限检查,造成安全漏洞。使用CallerSensitive注解后,getCallerClass不再用固定深度寻找调用者,而是跳过标注该注解的反射接口方法,有效解决了此问题。
240

被折叠的 条评论
为什么被折叠?



