JD.ST.POS

当检查 String.indexOf(..) 方法的结果是否大于 0 时,出现 JD.ST.POS。

漏洞与风险

方法 String.indexOf(..) 返回找到的符号的位置,开头为 0,因此检查是否大于 0 也许不正确,因为这遗漏了字符串中符号居首的所有情况。

缓解与预防

将 >0 的检查替换为 ==-1 或 >=0 的检查。

示例 1

复制
      public boolean checkFile(String file) {
         if (file.indexOf("/")>0) {
             return true;
         }
         return false;
     }

针对第 10 行的调用报告 JD.ST.POS:对于方法 indexOf 的结果,应该执行 >=0 或 <0 的检查,而不是执行 >0 的检查。