🚀 Рассказываем про новые диагностики

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`
🚀 Рассказываем про новые диагностики
Java отдел на связи! Мы продолжаем реализовывать диагностики, направленные на поиск потенциальных уязвимостей | Сетка — новая социальная сеть от hh.ru
repost

47

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь