Пользовательский код безопасности - PullRequest
1 голос
/ 12 сентября 2010

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

Какова наилучшая практика безопасности для приложений, которые выполняют код, предоставленный пользователем?Помимо доступа и изменения конфиденциальной информации сервера.(например, использование Python с урезанной версией стандартной библиотеки) Как предотвратить DoS, такие как программы без остановок и / или с интенсивной загрузкой процессора?(мы не можем использовать статический анализ кода здесь) А как насчет DoSing системы проверки типов?

Python, Prolog и Haskell являются примерами для обсуждения.

1 Ответ

1 голос
/ 12 сентября 2010

«Лучшая практика» (я действительно единственный, кто ненавидит эту фразу?), Вероятно, просто не делать этого вообще.

Если вы действительно должны сделайте это, настройте его для работы на виртуальной машине (и я не имею в виду что-то вроде JVM; я имею в виду нечто, на котором размещена ОС), поэтому легко восстановить виртуальную машину из снимка (или любой другой виртуальной машины).в данном случае это называется).

В большинстве случаев вам нужно немного выйти за рамки этого.Без дополнительной работы по ее блокировке даже виртуальная машина может использовать достаточно ресурсов, чтобы уменьшить скорость отклика, поэтому может быть сложно убить и перезапустить ее (обычно это можно сделать в конечном итоге, но «в конечном итоге» это редко то, что вам нужно).Вы также, как правило, хотите установить некоторые квоты, чтобы ограничить его общее использование ЦП, возможно, ограничить его использованием одного ЦП (и запустить его на компьютере с минимум двумя), ограничить его общее использование памяти и т. Д. В Windows, например,Вы можете сделать (по крайней мере, большую часть этого), запустив ВМ в объекте задания и ограничив ресурсы, доступные для объекта задания.

...