Комментарии 7
Интересная штука.
Форкнул себе, вот пытаюсь запустить ваши скрипты… а какие права нужно выдать на папки?
Форкнул себе, вот пытаюсь запустить ваши скрипты… а какие права нужно выдать на папки?
Почему вы не хотите использовать сервер задач, Gearman например? годное функциональное решение, без всяких велосипедов.
Ух, не рекомендовал бы никому это у себя размещать.
Вот здесь возможна уязвимость с инклюдом произвольного php-файла.
Также, данный проект создает в вебе скрипты с произвольным, заданным в POST контентом. Вряд ли данный скрипт кто-то захочет размещать у себя, тем более что его исходники вы сами выложили в свободный доступ. И теперь достаточно только знать сайты, где это могло быть размещено и послав к этим сайтам парочку запросов курлом, разместить там любой свой код. Советую вам скорее это исправить.
Недавно я задавал в q/a именно такой вопрос, который вы пытались решить. Почитайте, там местная публика предложила целую россыпь замечательных решений — habrahabr.ru/qa/34957/
Вот здесь возможна уязвимость с инклюдом произвольного php-файла.
if(isset($_POST['handler'])){
if(is_file(PDT_WORKING_DIR.'/handlers/'.$_POST['handler'].'.php')){
include(PDT_WORKING_DIR.'/handlers/'.$_POST['handler'].'.php');
}else{
PDT_HandleError('Handler <b>'.$_POST['handler'].'</b> not found');
}
}elseif($_POST){
PDT_HandleError('Неверный запрос');
}else{
include(PDT_WORKING_DIR.'/media/templates/pdt_index.html');
}
Также, данный проект создает в вебе скрипты с произвольным, заданным в POST контентом. Вряд ли данный скрипт кто-то захочет размещать у себя, тем более что его исходники вы сами выложили в свободный доступ. И теперь достаточно только знать сайты, где это могло быть размещено и послав к этим сайтам парочку запросов курлом, разместить там любой свой код. Советую вам скорее это исправить.
<?php
$from = array("`","~","!","@","#","$","%","^","&","*","(",")","-","=","+","\\","|","?","/",",",";",":","№","'","\"",".");
$_POST['args']['script'] = str_replace($from, '_', $_POST['args']['script']);
$_POST['args']['script'] = preg_replace('/\_+/','_', $_POST['args']['script']);
if($_POST['args']['script']!='_'&&$_POST['args']['script']){
$src = fopen(PDT_WORKING_DIR.'/scripts/'.$_POST['args']['script'].'.php','w');
fwrite($src, '<?php
// Содержимое скрипта
?>');
echo json_encode(array('script'=>$_POST['args']['script']));
}else{
echo json_encode(array('error'=>'В названии скрипта не должно быть спецсимволов, имя не может быть пустой строкой'));
}
?>
Недавно я задавал в q/a именно такой вопрос, который вы пытались решить. Почитайте, там местная публика предложила целую россыпь замечательных решений — habrahabr.ru/qa/34957/
дабы избежать недоразумений, повторю слова из README на GitHub:
, и повторю слова, которые написал в конце поста:
Все действия обрабатываются через файл index.php, для обеспечения безопасности в доступе к утилите достаточно:
— Создать в папке с утилитой файл .htaccess, прописать в нем запрет на доступ к папкам «data», «handlers», «scripts»
— Прописать в начале файла index.php перед всеми обработчиками свою систему защиты.
Внимание! Учтите, что доступ к утилите могут иметь другие пользователи / посетители сайта. Без применения соответствующих мер, данная утилита являет собой большую угрозу для безопасности.
, и повторю слова, которые написал в конце поста:
Утилита писалась без мысли о том, чтоб выйти в мир, во всеобщее употребление. Выложил только из-за мысли, что кому-то может пригодиться.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Утилита для запуска PHP-скриптов в фоновом режиме