2016-06-03 10 views
-5

Я искал Google и для stackoverflow для этого, поэтому, если он существует в любом месте, мои искренние извинения. Я (очевидно) новичок в Python, и одна из моих основных проблем с поиском нового модуля, который делает все, что делает новый проект программирования, заключается в следующем:Возможно, в Python для «импорта вируса»

Что мешает модулю (когда-то импортированному) делать нечестные вещи , например, записывать все нажатия клавиш во время выполнения скрипта, а затем отправлять их по электронной почте?

Я ли я параноик? Разве это невозможно в Python? Есть ли сайт, где модули были просмотрены кодом, и люди могут их скачать или установить, не беспокоясь? Должен ли я читать код каждого модуля/подмодуля каждый раз, когда я его загружаю, чтобы этого не произошло?

В настоящее время я использую Python 3.5.1 64-bit в Windows 8, но я сомневаюсь, что это слишком актуально.

+7

Вы не должны импортировать произвольные модули для начала. Это не ошибка Питона. –

+0

Если вы загружаете и запускаете произвольное теневое программное обеспечение, вы получаете сообщение о том, является ли это программное обеспечение модулем Python. – user2357112

+0

Если я написал модуль под названием «virus», который полезен для вашего приложения, я не уверен, что увижу проблему. Это как @self говорит - не импортируйте произвольные модули, которые вы не понимаете. – Makoto

ответ

5

Ничто не мешает. Это одно из преимуществ программного обеспечения с открытым исходным кодом (в строгом смысле «исходный код, который я могу просмотреть»): теоретически вы можете изучить его, чтобы точно увидеть, что он делает до его фактического запуска.

На практике, как правило, просто расширить некоторый уровень доверия к источнику:

  1. ли модуль широко используется, например, что другие обнаружили бы или упомянутые проблемы, в первую очередь?
  2. Я получил модуль от авторитетного источника?
  3. Соответствует ли контрольная сумма моей копии контрольной суммой, предоставленной моим источником?

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

+0

Спасибо @chepner. Это действительно полезно. –