以下代码标记为SonarQube中的安全热点,因为在计算正则表达式时会出现回溯,这可能导致DoS。正则表达式很好,因为它在代码的其他地方没有标记,所以我认为SonarQube正在标记它,因为它使用的是ReplaceAll。我读过这篇文章,Is use of ReplaceAll() method forbidden in SonarQube,但我认为这不适用于这里。我的老板希望我用//NOSONAR的注释来修复这个wihtout,但不确定需要修复什么。
final String MONGO_REG = "(mongodb://.+:)(.*)(@.+)";
final String PASSWD_REPLACEMENT = "XXXXXXXXXX";
String mongoUri = "mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin";
String newMongoUri = mongoUri.replaceAll(MONGO_REG, "$1" + PASSWD_REPLACEMENT + "$3");
logger.info(">> {}", newMongoUri);使用Java 11,有人能看到我如何解决这个问题吗?
发布于 2022-07-24 19:15:55
Difference between String replace() and replaceAll()
如果您以这种方式使用它,则应该使用Pattern.compile。Sonarqube无法检查您是否使用常规模式。
https://stackoverflow.com/questions/73092773
复制相似问题