2015-12-01 3 views
3

Я создал php-редактор, используя функцию файла, где пользователи могут запускать код онлайн и получать результат на той же странице.Как защитить php-редактор в php?

executephp5.php

<form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post"> 
    <b>Write your code here</b> 
    <textarea name="code"></textarea> 
    <input type="submit"value="Run code"> 
</form> 
<?php 
$cd=stripslashes($_POST['code']); 
#dont write empty textarea 
if(empty($cd)) { 
    echo ""; 
} else { 
    $file=fopen("demo.php","w"); 
    echo fwrite($file, $cd); 
    fclose($file); 
} 
?> 

<b>Results:</b> 
<hr> 
<?php 
    error_reporting(E_ALL); 
    include "demo.php"; 
?> 

demo.php является целевым файлом он обновляется по форме.

Это все работает так, как ожидалось. Моя проблема в том, что я хочу отключить все файлы, директорию, почту() и ftp-функции для этого редактора, чтобы пользователи не могли сбой сайта.

Есть ли способ отключить эти функции только для моего редактора?

+1

Вы можете начать с блокировки большинства вещей через 'php.ini', если у вас есть сервер (надеюсь, Linux), вы можете заблокировать это в собственной тюрьме без корневого доступа/etc/etc. Стоит посмотреть, как это делается [TehPlayground.com] (http://tehplaygroud.com), вот их [Repo] (https://github.com/thesilvervestgroup/tehplayground/) – Darren

+3

Ответ идентичен http : //stackoverflow.com/questions/3115559/exploitable-php-functions – apscience

+1

использовать 'disable_functions' в ini-файле. http://php.net/manual/en/ini.core.php#ini.disable-functions – Jigar

ответ

1

Вы можете передать disable_functions, i.e «Список функций, разделенных запятыми, для отключения в суб-интерпретаторе песочницы».

Проверить Runkit_Sandbox. Вы должны сделать редактор доступным как песочница.

Смежные вопросы