PHP изолирует произвольный код

) У нас есть приложение Java IRC, в котором пользователям разрешено выполнять произвольный PHP и получать результат. Здесь Вот один из примеров того, для чего это используется:

btc: $btc = json_decode(file_get_contents('https://btc-e.com/api/2/1/ticker'), true); $ticker = $btc['ticker']; echo "Current BTC Ticker: High: $".$ticker['high']." Low: $".$ticker['low']." Average: $" . $ticker['avg'];

У нас также есть установка на Python, но нам нравится PHP, потому что PHP нигде в коде не требует новых строк (поскольку это IRC, мы не можем добавить новые строки, если не выполним файл .py, загруженный из Интернета)

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

echo readfile("/etc/passwd");

Что, очевидно, считывает файл passwd для всеобщего обозрения.
У нас также возникла эта проблема после того, как мы попытались заблокировать readfile():

$rf = readfile; echo $rf("/etc/passwd");

Как нам защитить эту систему? (Полный код находится на github, для всех желающих: https://github.com/clone1018/Shocky)

Кроме того, никакая реальная конфиденциальная информация не раскрывается, так как все это в виртуальной машине, так что это не «бомба замедленного действия» или что-то в этом роде. Мы все еще хотим заблокировать его, хотя.

6
задан Riking 14 May 2012 в 19:07
поделиться