alex_tolstov's blog

By alex_tolstov, 15 years ago, In Russian
Йохоу, всем привет.

Пишу порт проверяющей системы с Windows на FreeBSD. Все вроде бы даже и работает, но возникает вполне закономерный вопрос - а как сделать так, чтобы пользователь не послал на проверку какую-нибудь чушь, которая убьет сервер, или же, например, не занялся читерством по типу доступа к ресурсам, к которым он не должен иметь этот самый доступ.

Поскольку с такими задачами я ранее не сталкивался, то и решения данной проблемы у меня нет.


В голову приходят лишь некоторые идеи:



1) Запуск решений под пользователем, не имеющим доступа к файловой системе, помимо чтения/записи инпута/аутпута.
2) Некий "анализатор" решений на различных языках, запускаемый после процесса компиляции с целью отстранить от тестирования решения, которые, например, вызывают определенные функции, неугодные нам. Возникает ощущение что это как-то не тру, из-за того что "за всем не углядишь" и "лениво для каждого языка писать свое".
3) Каким-то образом отрубить библиотеки, которые, опять же, нам не нужны. В результате у нас не должно скомпилироваться.
4) По горячим следам найдена тема безопасности на Яве, заключающаяся в применении менеджера безопасности и настроек политики.
5) Проводить операции, касающиеся безопасности, не над исходником, а над непосредственно бинарником. Сюда может входить подмена адресов вызываемых функций или чего-то похожего.


Было бы интересно узнать о стандартных подходах в такой ситуации среди Гуру. =) Уверен, что многие из сидящих на этом сайте имели/имеют отношение к написанию проверяющих систем :)

Заранее спасибо!
  • Vote: I like it
  • 0
  • Vote: I do not like it