﻿# 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\.](https://owasp.org/Top10/en/A05_2021-Security_Misconfiguration/)

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

```cpp
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` записываются данные, не прошедшие никакой валидации, благодаря чему злоумышленник может передать любое название базы данных\. Подобным образом он может получить информацию, доступ к которой не был предусмотрен\. 

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

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

```cpp
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`\. Таким образом, пользователь будет иметь доступ лишь к определённому перечню баз данных, что не позволит получить приватную информацию\.