Может ли `pip install foo-package == 1.0.0` загрузить другой код сегодня, чем вчера? - PullRequest
2 голосов
/ 18 февраля 2020

Мне нужно убедиться, что пакет, который был разрешен для безопасной системы, останется прежним c, если он будет установлен снова в будущем. Может ли плохой актер (владелец пакета) обмануть пользователя в загрузке небезопасного / непроверенного исходного кода?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2020

Поддерживающий PyPI здесь: Да, это возможно, поскольку pip установит тот дистрибутив, который является оптимальным. Это обычно происходит, когда проект загружает исходный дистрибутив (sdist), а затем загружает колесико, определяемое платформой c для данного выпуска: pip всегда будет отдавать предпочтение колесу по сравнению с исходным дистрибутивом.

Если вы Если вы хотите предотвратить это, вы можете указать хэши файлов при установке через ha sh -checking mode .

0 голосов
/ 18 февраля 2020

PyPI запрещает пользователям загружать файл с тем же именем. Поэтому, если пользователь загружает пакет с файлом колесика, который выглядит как foo-1.0.0-py2py3-none-any.whl, он не может обновить этот файл, чтобы он содержал другой исходный код. Однако они могут удалить v1.0.0 из PyPI, изменить исходный код и затем загрузить оба: foo-1.0.0-py2-none-any.whl и foo-1.0.0-py3-none-any.whl, эффективно обманывая пользователя в загрузке потенциально вредоносного колеса.

...