Предотвращение выполнения программ другими программами - PullRequest
3 голосов
/ 21 февраля 2011

Контекст: я хочу написать сайт соревнований по программированию для нашей школы, и я знаю, что должен предотвратить злоупотребление вводом-выводом файлов из представленных программ. Однако я хочу выяснить, как это сделать, - запретить кому-то писать программу, которая может выполнять другие программы. Например, кто-то может отправить Java-программу, которая использует классы Runtime или ProcessBuilder, чтобы совершать какие-либо вредоносные действия на нашем сервере, нарушать работу сайта или связываться с другим конкурентом.

Какие способы защиты от этого существуют на серверах Windows Unix / Linux и (только для справки)?

Ответы [ 3 ]

3 голосов
/ 21 февраля 2011

В случае с Java вы можете использовать политики безопасности для достижения этого или, по крайней мере, его части.(Тюрьмы Chroot, как предлагается в комментарии, всегда хорошая идея.)

3 голосов
/ 21 февраля 2011

Я думаю, что вы можете использовать SELinux или Apparmor для достижения этой цели.

2 голосов
/ 21 февраля 2011

Онлайн-соревнования по программированию в режиме реального времени - это круто ... но есть много способов ошибиться. Я помню Java, который мы использовали в нашей школе, в котором были уязвимости при взломе URL-адресов, уязвимости при выполнении файлового ввода-вывода и т. Д. Мне удалось добавить друзей из других школ и вывести список файлов на сервере. Я удивлен, что система все еще работает. Как упоминалось в комментариях, вам, вероятно, лучше избегать какого-либо удаленного выполнения программ любого типа.

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