51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1340|回复: 0
打印 上一主题 下一主题

fortify扫面项目会出现的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-16 13:23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近期,公司用fortify扫描项目,出现了很多的安全性问题,由于之前也没有接触过,网上的资料又比较少,一时间很是
棘手,今天算是全部弄完了,顺便总结一下,也让其他人借鉴一下,少走些弯路.

1  Unreleased Resource: Streams
原因:出现这个漏洞的原因就是有时候流没有关闭,比如说创建流和关闭流之间,如果这段代码出现问题抛出异常
则会没有关闭

方案:把关闭流的代码放入(try catch )finally中,即使出现异常也会关闭.



2. Cross Site Scripting

原因:这个就很多了,包括sql注入,也有可能是java向js中传参等原因,这里只介绍向js中传参

方法:StringEscapeUtils工具类,他有escapeJava();escapeJavaScript();escapeXml();等多种方法对传入的参数进
行转义从而可以避免



3.path manipulation

原因:在拼接路径的时候可能会被加入../等字符,导致可以访问其他位置,对其他文件进行操作.

方法:1.替换..  replace("..","");

        2.白名单方法   下面是白名单方法(网上的一段,大家可以修改),如果路径中有其他字符也可以加进去,如果
把.加进去就必须做判断了,目的是把..过滤掉

         加replace("..","");


  1. HashMap<String, String> map = new HashMap<String, String>();
  2.   map.put("a", "a");
  3.   map.put("b", "b");
  4.   map.put("c", "c");
  5.   map.put("d", "d");
  6.   map.put("e", "e");
  7.   map.put("f", "f");
  8.   map.put("g", "g");
  9.   map.put("h", "h");
  10.   map.put("i", "i");
  11.   map.put("j", "j");
  12.   map.put("k", "k");
  13.   map.put("l", "l");
  14.   map.put("m", "m");
  15.   map.put("n", "n");
  16.   map.put("o", "o");
  17.   map.put("p", "p");
  18.   map.put("q", "q");
  19.   map.put("r", "r");
  20.   map.put("s", "s");
  21.   map.put("t", "t");
  22.   map.put("u", "u");
  23.   map.put("v", "v");
  24.   map.put("w", "w");
  25.   map.put("x", "x");
  26.   map.put("y", "y");
  27.   map.put("z", "z");
  28.   
  29.   map.put("A", "A");
  30.   map.put("B", "B");
  31.   map.put("C", "C");
  32.   map.put("D", "D");
  33.   map.put("E", "E");
  34.   map.put("F", "F");
  35.   map.put("G", "G");
  36.   map.put("H", "H");
  37.   map.put("I", "I");
  38.   map.put("J", "J");
  39.   map.put("K", "K");
  40.   map.put("L", "L");
  41.   map.put("M", "M");
  42.   map.put("N", "N");
  43.   map.put("O", "O");
  44.   map.put("P", "P");
  45.   map.put("Q", "Q");
  46.   map.put("R", "R");
  47.   map.put("S", "S");
  48.   map.put("T", "T");
  49.   map.put("U", "U");
  50.   map.put("V", "V");
  51.   map.put("W", "W");
  52.   map.put("X", "X");
  53.   map.put("Y", "Y");
  54.   map.put("Z", "Z");


  55. map.put(":", ":");
  56.      map.put("/", "/");
  57.      map.put("\\", "\\");
  58.   
  59.   String temp = "";
  60.   for (int i = 0; i < path.length(); i++) {

  61.    if (map.get(path.charAt(i)+"")!=null) {
  62.     temp += map.get(path.charAt(i)+"");
  63.    }
  64.   }
  65.   path = temp;
  66.   
  67.   File proFile = new File(path);
复制代码

4.序列化问题
   这个最简单,相关类实现serializable接口就可以了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-20 06:46 , Processed in 0.060144 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表