zoukankan      html  css  js  c++  java
  • fortify扫面项目会出现的问题

    近期,公司用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("..","");

               

    HashMap<String, String> map = new HashMap<String, String>();
      map.put("a", "a");
      map.put("b", "b");
      map.put("c", "c");
      map.put("d", "d");
      map.put("e", "e");
      map.put("f", "f");
      map.put("g", "g");
      map.put("h", "h");
      map.put("i", "i");
      map.put("j", "j");
      map.put("k", "k");
      map.put("l", "l");
      map.put("m", "m");
      map.put("n", "n");
      map.put("o", "o");
      map.put("p", "p");
      map.put("q", "q");
      map.put("r", "r");
      map.put("s", "s");
      map.put("t", "t");
      map.put("u", "u");
      map.put("v", "v");
      map.put("w", "w");
      map.put("x", "x");
      map.put("y", "y");
      map.put("z", "z");
      
      map.put("A", "A");
      map.put("B", "B");
      map.put("C", "C");
      map.put("D", "D");
      map.put("E", "E");
      map.put("F", "F");
      map.put("G", "G");
      map.put("H", "H");
      map.put("I", "I");
      map.put("J", "J");
      map.put("K", "K");
      map.put("L", "L");
      map.put("M", "M");
      map.put("N", "N");
      map.put("O", "O");
      map.put("P", "P");
      map.put("Q", "Q");
      map.put("R", "R");
      map.put("S", "S");
      map.put("T", "T");
      map.put("U", "U");
      map.put("V", "V");
      map.put("W", "W");
      map.put("X", "X");
      map.put("Y", "Y");
      map.put("Z", "Z");


    map.put(":", ":");
         map.put("/", "/");
         map.put("\", "\");
      
      String temp = "";
      for (int i = 0; i < path.length(); i++) {

       if (map.get(path.charAt(i)+"")!=null) {
        temp += map.get(path.charAt(i)+"");
       }
      }
      path = temp;
      
      File proFile = new File(path);

        

    4.序列化问题

       这个最简单,相关类实现serializable接口就可以了

  • 相关阅读:
    Java的日期类和日期格式化类
    Java中的内部类
    c#中的里氏转换和Java中强制类型转换在多态中的应用
    MySQL存储引擎
    如何控制多线程执行顺序
    为什么 1000==1000 返回为false,而 100==100 会返回为true
    HashMap和HashTable的区别
    打印昨天的当前时刻
    怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串?
    MyBatis中 # 和 $ 的区别?
  • 原文地址:https://www.cnblogs.com/shaoyang/p/5766203.html
Copyright © 2011-2022 走看看