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

Dotenv в Интернете действительно полезен, потому что мы можем сохранить информацию в файле с именем .env, а затем использовать эту переменную в коде, если у кого-то есть доступ к коду, у этого человека не будет информации, которая была внутри dotenv, поскольку мы обычно не помещаем это код на сервере и даже не на github.

Было бы логично, если бы мы могли иметь такое же поведение на флаттере, верно? НЕПРАВИЛЬНЫЙ!

В этой статье я покажу вам уязвимость, которая может поставить под угрозу ваше приложение и сервер.

На флаттере у нас есть действительно специфическая проблема: любой, у кого есть доступ к файлам проекта, может найти этот файл .env, поскольку он будет скомпилирован с проектом, поэтому его можно будет использовать где угодно (потому что он работает иначе, чем веб-работа). ).

Позвольте мне объяснить это лучше?

используя пакет flutter_dotenv, нам нужно поместить зависимость в pubspec.yaml

затем нам нужно создать файл .env в корне проекта, а затем создать переменные

после этого в pubspec.yaml нам нужно обратиться к файлу .env как к ассету

Затем нам нужно импортировать зависимость dotenv в main.dart и загрузить файл .env.

После этого вы уже можете создать свой проект, например, для Android, и вы сможете правильно использовать dotenv. Но проблема в файлах, которые были сгенерированы при сборке проекта.

Если вы перейдете в раздел файлов и проследуете по этому пути:
build-›app-›outputs-›apk-›debug-›app-debug.apk (поскольку мы собираем приложение как отладку для Android).

затем вы можете щелкнуть правой кнопкой мыши файл и открыть в проводнике

Когда вы открываете в проводнике, вы найдете эти два файла

Затем измените расширение app-debug.apk на «.rar».

После этого вам нужно будет распаковать этот app-debug.rar

Так вы получите папку со всеми файлами

Откройте эту папку, и вы найдете папку с ресурсами

А потом флаттер_активы

Затем вы получаете файл с именем .env, вы можете открыть этот файл .env с помощью vscode или блокнота или чего угодно.

И у вас будет файл .env с вашими переменными среды.

Итак, является ли использование dotenv лучшим способом защиты информации во флаттере?