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

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

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

  1. CWE ID 338:Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)

    问题描述 产品在安全上下文中使用了伪随机数生成器(PRNG),但加密性不强. Bad Code // ANTI-PATTERN, do not copy-paste // On windows, de ...

  2. 分布式id生成器:彻底解决雪花算法时间回拨问题

    Butterfly 简介 雪花算法是twitter提出的分布式id生成器方案,但是有三个问题,其中前两个问题在业内很常见: 时间回拨问题 机器id的分配和回收问题 机器id的上限问题 Butterfl ...

  3. 服务器直接ip登录显示令牌错误,事件ID 18456:用户域\计算机名登录失败。 原因: 基于令牌的服务器访问验证失败,出现基础结构异常...

    事件ID 18456:用户登录失败. 原因: 基于令牌的服务器访问验证失败,出现基础结构错误 事件类型:审核失败 事件来源:MSSQLSERVER 事件种类:登录 事件 ID:18456 日期:201 ...

  4. 生成ID模板:年月日时分秒+6位自增码

    由于生成订单ID.商品ID 或者什么什么ID的,不想用自增,又怕重复,于是就用  年与日时分秒 + 6位自增码 (共计20位长度)来当作ID 注意:如果你的ID是Long型,就要注意,Long的最大长 ...

  5. Vue.js 极简小例:表单 (输入框 input、文本域 textarea、单选框 radio、下拉菜单 selected、复选框 checkbox)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 代码: <template> <div > <p>------- ...

  6. mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名)

    1.mysql中对一个表的id建立了唯一索引,那么查询的select count(*) ,select count(1) ,select count(id),select count(列名) 的查询结 ...

  7. 解决报错SyntaxError:Unexpected end of JSON input

    跳转页面传递参数 var selectWorker = JSON.stringify(selectWorker); uni.navigateTo({url: '../recordForm/record ...

  8. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)

    Keras之DNN:利用DNN算法[Input(8)→12+8(relu)→O(sigmoid)]利用糖尿病数据集训练.评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果) 目录 输出结果 ...

  9. SCALA Linux安装:JAVA.LANG.NUMBERFORMATEXCEPTION: FOR INPUT FOR INPUT STRING: “0X100“

    SCALA安装:JAVA.LANG.NUMBERFORMATEXCEPTION: FOR INPUT FOR INPUT STRING: "0X100" 问题描述 Linux终端输 ...

  10. Mac解压Linux平台tar包报错:tar: Error reading Truncated input file

    1.报错:tar: Error reading Truncated input fileMac使用tar命令解压Linux平台tar包报错,需要安装gnu-tar来解压. 2.解决 # brew in ...

最新文章

  1. 选频放大电路对于150kHz导航信号进行放大检波
  2. 生产环境碰到系统CPU飙高和频繁GC,你要怎么排查?
  3. python str字符串和byte字节流的区别 encode、decode方法的区别
  4. [CODEVS 1285] 宠物收养所
  5. cr3格式是什么意思_尼康DX镜头是什么意思
  6. CWinApp的应用与理解
  7. 订单失效怎么做的_虾皮Shopee新加坡电商做什么产品好呢?订单少得可怜怎么办呢...
  8. WUSTOJ 1285: Factors(Java)
  9. 十年 IT 老兵告诉你如何快速构建可直接落地、基于开源的低成本架构!
  10. js Object.is 相等判断
  11. 2021-09-14基于用 户 行为 序列建模的推荐算法研究
  12. 透彻解读mysql的可重复读、幻读及实现原理
  13. c语言开发 kdj,[转载]随机指标KDJ,及其MA、EMA、SMA、DMA介绍
  14. 单位换算:存储容量单位bit(比特)、Byte(字节)、KB、GB、TB;速率单位b/s,Kb/s,Mb/s,Gb/s,Tb/s
  15. 魔百盒CM311-1_S905L3芯片_YST代工_红外蓝牙语音_安卓9.0_线刷固件包
  16. 无法同步谷歌日历_安卓手机的日历App之选择、使用(附记:纪念日App)
  17. 11 款用于优化、分析源代码的Java工具
  18. C#+Appium+Nunit demo
  19. html图片左右无缝循环滚动示例
  20. Object.assign与vue $set

热门文章

  1. matlab 打开立即窗口,《如何编程打开或关闭VBE界面中的立即窗口及其他窗口?》-- access911.net 文章...
  2. 如何计算近似纳什均衡_网络与市场中的计算思维-5.博弈论的基本概念
  3. win10 电脑蓝牙无法使用无法连接问题的一种神奇解决办法
  4. 致远OA-A8系统的0day远程命令执行的实战
  5. 请求的操作需要提升 windows7 route add命令 windows7添加路由
  6. matlab绘制动图
  7. LightOJ 1224 DNA Prefix
  8. dispatch source理解
  9. java 匹配冒号,java 冒号参数 java 获取冒号后面的参数(正则)实现代码
  10. 【Pytorch】pack_padded_sequence与pad_packed_sequence实战详解