我正在尝试解决由checkmarx scan提供的安全性问题。在类型上,“违反信任边界”。我尝试了多种解决方案,但似乎都没有用。

我尝试了大多数其他解决方案提供的验证检查,还尝试了规范化。但仍然无法正常工作。

public static String sanitize(String inputString) {

if (!inputString.matches("[-0-9a-zA-Z_]+")) {
    return null;
}

return ESAPI.encoder().canonicalize(inputString.replace("/", "").replace("..", ""), false, false);
}


Checkmarx显示的问题:该元素的值在未经适当清理或验证的情况下流经代码,最终存储在服务器端Session对象中。 (违反信任边界)

最佳答案

这是此Checkmarx查询的众所周知的“错误”。违反信任边界(CWE-501)。问题可能是您将使用已清理的对象和未清理的对象将数据存储在会话中。正如我所看到的,您正在编写代码,您似乎进行了一些消毒。我认为这是您正确的白名单。

如果执行此操作(消毒),则应将其视为“假阳性”。在报告了其中一些内容后,我知道Checkmarx正在进行此工作。在以后的Checkmarx版本中应该会更好

10-06 07:07