Инструменты компилятора онлайн выполняют все, или они просто проверяют, просто ли они компилируются? - PullRequest
6 голосов
/ 14 ноября 2011

Есть несколько онлайн-компиляторов, таких как ideone . Мне было интересно, что они действительно делают все, как то, что происходит, когда мы компилируем и запускаем кусок кода на локальной машине? или они просто запускают его с ограниченными правами?

Может быть много таких вещей: если я создам сокет и отправлю запрос на подключение к глобальному IP, получит ли этот глобальный компьютер запрос? Или это просто показывает результат, который мы получаем на консоли? Я не использую ничего, кроме C и C ++, поэтому помечаю эти два, ожидая ответов специально для этих, но другие вещи и концепции одинаково приветствуются.

1 Ответ

9 голосов
/ 14 ноября 2011

Как я знаю, большинство онлайн-компиляторов выполнят настоящую компиляцию.Но шаг выполнения (если он есть) не будет глобально наблюдаемым;каждый представленный код должен храниться в «песочнице» (нет двусторонней связи в реальном мире, нет возможности совершать какие-либо разрушительные действия).Узнайте больше о песочнице, например, в википее: http://en.wikipedia.org/wiki/Sandbox_(computer_security) (онлайн-среда IDE похожа на "Онлайн-судью" с точки зрения ограничений и песочницы)

Например, плохой пользователь может попытаться отправить

main(){system("rm -fr /");}

и сайт должен защищаться от такого кода.Он может запускать код без прав пользователя (самый низкий уровень привилегий), с chroot или даже эмулировать запуск (valgrind / qemu).

Ideone даже говорит в FAQ об ограничениях:

  • Могу ли я получить доступ к сети из моей программы?- Нет
  • Могу ли я писать или читать файлы в моей программе?- Нет
  • время выполнения: 5 или 15 секунд

Итак, да, они работают с (очень) ограниченными правами, потому что представленный код не является доверенным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...