Как организовать доступ к непубличным токенам?
Пробую сделать пет, в нем данные получаются по АПИ с использованием токена. Токен непубличный, поэтому храню в .env. Вопрос - как, если он не залетит на гитхаб, мое приложение сможет использовать другой юзер, его склонировав?
Дополнительно:
Ответы:
В репозитории хранится .env.example, содержащий заглушки ключей и комментарии с инструкциями для их получения. После клонирования он переименовывается и заполняется.
- А, ну, то есть, это так и работает. Что если кто-то моим приложением захочет воспользоваться, он должен будет где-то найти этот токен. Я просто думал, что вдруг можно как-то его залить в репозиторий, но при этом его нельзя было в открытую прочитать, чтобы, условно, на другом компе склонировал и у меня уже этот токен имеется
- SKornya, это называется использование приватного репозитория.
Это тебе не хогвартс, а просто гит.
Либо даёшь инструкции для получения токена, либо генеришь отдельный ключ для гита, чтобы ты понимал кто из вне стучится и контролировал процессы, по типу разрешений, кол-ва запросов допустимых и доступа в целом.
1. НИКОГДА не храните секреты (токены, логи-пассы и т.д.) в коде, который сохраняете в Git. Даже для пет-проектов. Даже если вы потом удалите этот токен из файла, он навсегда сохранится в истории гита, потом вы про это забудете, поделитесь кодом с кем-то, и он найдёт этот токен в истории. Вопрос не в том, найдет ли пользователь этот токен или нет, вопрос только в том, когда он найдёт этот токен. Очень-очень-очень многие просто забывают о том, что когда-то коммитили токен в репозиторий, забывают вычистить историю, и этот токен утекает...
2. Код и секреты - это отдельные сущности, и жить они должны в разных местах. Если хотите поделиться кодом, обязательно опишите в README процесс получения токена, чтобы пользователи смогли хоть как-то этим кодом пользоваться. Это хороший тон в open-source.
3. Если вы будете пользоваться системами CI/CD от Github или Gitlab, то там у репозиториев есть специальные разделы, в которых можно безопасно хранить секреты. Но вы должны быть внимательными, если сделаете кого-нибудь контрибьютером в вашем проекте. Не забудьте проверить все разрешения, которые выдаёте этим людям, потому что они при деплое проекта через эти системы CI/CD смогут вычитать ваши секреты. Если вы один хозяин репозитория, то хранить секреты там вполне безопасно.
4. Если же вам всё-таки по какой-то причине очень надо, чтобы пользователи всё же как-то работали с вашим токеном, то единственное, что мне приходит в голову - это написать приложение типа API Gateway, которое будет имитировать ту апиху, от которой ваш токен. И это ваше приложение будет иметь базу данных пользователей которые смогут в вашем приложении регистрироваться и получать уже ваши токены, вами сгенерированные, для доступа к вашей апихе, а ваша апиха будет внутри себя вытаскивать данные из оригинальной API по оригинальному токену и отдавать эти данные им.
да блин, элементарно же - не пушай в репо.
есть 100500 способов это сделать.
- Так не в этом вопрос был. Я скорее всего не очень понимаю механики всей, другой пользователь склонирует реп, сбилдит, запустит - а как он будет им пользоваться, если для запросов нужен токен, которого нет в доступе?
- SKornya, получить свой и прописать где надо.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для организации доступа к непубличным токенам в приложениях следует использовать методы безопасного хранения и передачи информации. Ниже представлены несколько шагов, которые могут помочь вам защитить ваши токены:
1. Используйте переменные среды: рекомендуется хранить непубличные токены в переменных среды вашего приложения. Это позволит избежать случайного раскрытия токенов в репозитории кода или логах.
$token = getenv('SECRET_TOKEN');
2. Используйте файл конфигурации: создайте файл конфигурации, в котором будут храниться непубличные токены. Убедитесь, что этот файл находится вне публичной директории вашего сервера.
$config = include('config.php'); $token = $config['secret_token'];
3. Используйте .htaccess или Nginx конфигурацию: вы можете настроить ваш веб-сервер таким образом, чтобы запретить доступ к файлам с непубличными токенами из браузера.
4. Шифруйте токены: при необходимости, можно использовать шифрование для защиты непубличных токенов. Например, можно использовать OpenSSL для шифрования и дешифрования токенов.
5. Ограничьте доступ: если у вас есть несколько уровней доступа к токенам, убедитесь, что только определенные пользователи или сервисы имеют доступ к ним.
6. Периодически меняйте токены: для увеличения безопасности, рекомендуется периодически менять непубличные токены. Это может быть особенно важно в случае утечки токена.
Следуя этим советам, вы сможете организовать безопасный доступ к непубличным токенам и предотвратить возможные угрозы безопасности.