>
>
>
V6110. Using an environment variable co…


V6110. Using an environment variable could be unsafe or unreliable. Consider using trusted system property instead

Данное диагностическое правило позволяет обнаружить использование переменных среды, которые можно заменить системным свойством.

Согласно документации, проблема может заключаться в том, что:

  • Злоумышленник может контролировать все переменные среды, которые входят в программу.
  • На разных ОС они могут иметь слегка разную семантику, или может отличаться чувствительность к регистру.

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

Например, если операционная система предоставляет имя пользователя, оно всегда будет доступно в системном свойстве 'user.name'.

Плохая практика:

String user = System.getenv("USER");

Исправление:

String user = System.getProperty("java.name");

Помимо прямых вызовов метода 'System.getenv()', диагностика отслеживает методы по их сигнатурам, которые могут свидетельствовать о возвращении значений переменных среды.