0


跟着开源项目学java3-从导出excel防止csv注入的提交看注入类的安全问题的解决思路

image-20221226145005203

image-20221226145050672

先简单说一下 csv 注入,导出单元格中存在计算符号,会被解析成公式,可能会在 office 中拉起其他程序,比如 cmd,可参考(4条消息) CSV注入漏洞原理及利用教程_丶没胡子的猫的博客-CSDN博客_?id=81338265.csv入侵

我们这次需要实现的是,在解析导出单元格的时候,匹配检验下有没有这四个特殊字符,如果存在直接修改为 tab(跳转到下一个单元格)

String cellValue =Convert.toStr(value);// 对于任何以表达式触发字符 =-+@开头的单元格,直接使用tab字符作为前缀,防止CSV注入。if(StringUtils.containsAny(cellValue,FORMULA_STR)){
                cellValue =StringUtils.replaceEach(cellValue,FORMULA_STR,newString[]{"\t=","\t-","\t+","\t@"});}
            cell.setCellValue(StringUtils.isNull(cellValue)? attr.defaultValue(): cellValue + attr.suffix());

这块实现主要涉及到用 common-utils 的的两个工具方法

  • StringUtils.containsAny()
  • StringUtils.replaceEach()
标签: excel

本文转载自: https://blog.csdn.net/qq_39007838/article/details/128444626
版权归原作者 周周写不完的代码 所有, 如有侵权,请联系我们删除。

“跟着开源项目学java3-从导出excel防止csv注入的提交看注入类的安全问题的解决思路”的评论:

还没有评论