PVS-Studio: поиск ошибок в коде программ
26.02
🚀 Рассказываем про новые диагностики
Java отдел на связи! Мы продолжаем реализовывать диагностики, направленные на поиск потенциальных уязвимостей. В этот раз поговорим про XPath и новую диагностику V5312. Пример в студию: `@RestController("/xpathDemo") public class XPathTestController { private Document doc;
@GetMapping public ResponseEntity getXMLData( @RequestParam("username") String username, @RequestParam("password") String password ) { var xpath = XPathFactory.newInstance() .newXPath();
String query = "//users/user[" + "username/text() = '%s' and" + "passwordHash/text() = '%s']" + "/data/text()";
query = String.format(query, username, password);
String result = ""; try { result = xpath.evaluate(query, doc); // .... } catch (XPathExpressionException e) { // .... } //....
return new ResponseEntity<>(result, HttpStatus.OK); } }
Здесь запрос на языке XPath формируется на основе данных, пришедших извне. В случае, если параметр username будет следующим - john' or ''=', то нам вернутся данные по пользователю john независимо от того, правильный нам пришёл пароль или нет.
Из этого следует, что всегда необходимо проверять, что за данные вы используете, особенно если они пришли снаружи. И наша диагностика V5312 как раз выявляет случаи, когда для формирования XPath запроса используются непроверенные данные извне. Доступна эта диагностика с релиза 7.35.
#java #PVS_Studio`еще контент в этом сообществе
еще контент в этом соообществе
PVS-Studio: поиск ошибок в коде программ
26.02
войдите, чтобы увидеть
и подписаться на интересных профи