@CallerSensitive学习笔记

本文解析了如何通过CallerSensitive注解防止反射调用中的权限欺骗漏洞,阐述了其工作原理及在getCallerClass方法中的应用,确保了代码安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解释
这个注解是为了堵住漏洞用的。曾经有黑客通过构造双重反射来提升权限,原理是当时反射只检查固定深度的调用者的类,看它有没有特权,例如固定看两层的调用者(getCallerClass(2))。如果我的类本来没足够权限群访问某些信息,那我就可以通过双重反射去达到目的:反射相关的类是有很高权限的,而在 我->反射1->反射2 这样的调用链上,反射2检查权限时看到的是反射1的类,这就被欺骗了,导致安全漏洞。使用CallerSensitive后,getCallerClass不再用固定深度去寻找actual caller(“我”),而是把所有跟反射相关的接口方法都标注上CallerSensitive,搜索时凡看到该注解都直接跳过,这样就有效解决了前面举例的问题
作用
Reflection.getCallerClass()加了@CallerSensitive注解后,能够跟踪到最初的调用者。例如 method-1 -> method-2 -> method-3 -> method-4 -> Reflection.getCallerClass,最终返回的是method-1
@CallerSensitive能够堵住反射的漏洞,当你尝试用反射调用Reflection.getCallerClass(),结果会抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值