# V5320. OWASP. Use of potentially tainted data in configuration may lead to security issues.

Анализатор обнаружил, что для конфигурации системы или базы данных используются данные из внешнего источника. Это может привести к возникновению дефекта безопасности.

Уязвимости такого типа относятся к категории рисков OWASP Top 10 Application Security Risks 2021:

- A5:2021 - Security Misconfiguration.

Приведем пример:

    public static class DataBaseController {
      private String user;
      private String password;

      private void connectFromRequest(HttpServletRequest request) {
        String dbName = request.getParameter("db");

        String dbUrl = "jdbc:mysql://localhost:3306/" + dbName +
                       "?useUnicode=true&characterEncoding=utf8";
        Connection db = DriverManager.getConnection(dbUrl, user, password);
      }
    }

В этом примере формируется строка подключения к БД. В переменную `dbUrl` записываются данные, не прошедшие никакой валидации, благодаря чему злоумышленник может передать любое название базы данных. Подобным образом он может получить информацию, доступ к которой не был предусмотрен.

Для защиты от подобных атак стоить производить валидацию входных данных.

Пример корректного формирования строки подключения:

    public static class SafeDataBaseController {

      private final List<String> WHITE_LIST = new ArrayList<>();
      private String user;
      private String password;

      private void safeConnectFromRequest(HttpServletRequest request) {
        String db = request.getParameter("db");

        if (!WHITE_LIST.contains(db)) {
          return;
        }

        String dbUrl = "jdbc:mysql://localhost:3306/" + db +
                       "?useUnicode=true&characterEncoding=utf8";
        Connection db = DriverManager.getConnection(dbUrl, user, password);
      }
    }

В данном случае проверяется, что база данных `db` содержится в списке `WHITE_LIST`. Таким образом, пользователь будет иметь доступ лишь к определённому перечню баз данных, что не позволит получить приватную информацию.

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.).

Данная диагностика классифицируется как:

CWE-15