CWE ID 470:Use of Externally-Controlled Input to Select Classes or Code (‘Unsafe Reflection‘)

问题描述
不安全的反射漏洞,是指应用程序使用具有反射功能的外部输入来选择要使用的类或代码,可能被攻击者利用而输入或选择不正确的类或代码。
攻击者可能通过该漏洞,执行未经授权的代码或命令、改变执行逻辑、读取应用程序数据等,严重的还会导致应用程序崩溃、退出或重启。

Bad Code

Class<?> clz = Class.forName(className);

解决方案

Class<?> clz = Class.forName(Normalizer.normalize(className,Normalizer.Form.NFC));

使用normalize方法对外部输入字符串做归一化/标准化,确保具有相同意义的字符串具有统一的二进制描述, 对外部输入字符串进行归一化后再校验可以避免一些潜在的问题。
但normalize方法也存在缺点,输入字符串太长的话转换效率会比较低,所以最好还是结合实际按需使用。

参考资料
CWE – http://cwe.mitre.org/data/definitions/470.html
不安全的反射漏洞 – https://blog.csdn.net/Tianqi_Wukong/article/details/112861781
Codedex Unsafe Reflection – https://blog.csdn.net/VioletHan7/article/details/103300534
Java之Normalizer(归一化):https://oscar.blog.csdn.net/article/details/105326270
关于Normalizer.normalize()方法的用途:https://blog.csdn.net/u010512607/article/details/79921353

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值