Думать о безопасности нужно всегда. Особенно, когда пишешь код. И дважды особенно, когда пользуешься кодом других людей. Это сильно помогает сэкономить время и силы. Но вместе с этим может привести к проблемам, особенно, если не придерживаться хотя бы здравого смысла.
При программировании часто используемые классы, объекты и функции можно сохранять в модулях. Это такое официальное название для файлов с расширением .py. Условно модуль можно отличать от обычной программы на Python тем, что программа предназначена для запуска и выполнения, а модуль - для хранения часто используемых конструктов и импорта их в другие программы.
Пакет в Питоне - это каталог, содержащий другие каталоги и модули, а также специальные файлы. Пакеты используются для формирования пространства имен, что позволяет использовать разные модули, объединенные как правило общей темой.
Наиболее известным репозитарием таких пакетов является PyPI или Python Package Index. В PyPI можно найти и установить пакеты практически на любую тему. В 2022 году там содержалось более 370 тысяч различных пакетов.
Мне стало интересно, какие меры безопасности предпринимают другие разработчики, чтобы убедиться, что они не загружают из PyPI что-либо вредоносное. Ведь любой человек может загрузить свой пакет туда, и пока нет никаких проверок безопасности или превентивных мер, принятых самим PyPi.
Несколько полезных советов на эту тему:
- Если хоть немного разбираешься, то посмотри исходный код пакета перед его установкой.
- Устанавливай софт только от надежных разработчиков. На странице пакета посмотри хотя бы на статистику GitHub - количество звезд и форков. Чем их больше, тем больше людей пользуются этим пакетом и тем меньше вероятность получить злой код.
- Почитай Python Security doc о пакетах и PyPi.
- Обрати внимание на пакет Safety. Он проверяет установленные пакеты на наличие известных уязвимостей.
- Используй Safety DB - базу данных известных уязвимостей безопасности в пакетах Python для их выявления в установленных пакетах.
В конце декабря 2019 года Python Software Foundation объявили, что получили грант от Фейсбука и начнут работы по добавлению “расширенных функций безопасности” в Python Package Index.
Среди функций, которые планируется добавить будет проверяемая криптографическая подпись артефактов и автоматическое обнаружение вредоносных загрузок.
Пусть твой код и твои модули всегда будут в безопасности! :)
Один емейл, когда выйдет новый пост.