- 1
- 2
- 3
- 4
- 5
- 6
if(count($MenuItem)>4)
{
$CONDITION = $MenuItem[4];
if(strlen($CONDITION)>0 && (!eval("return ".$CONDITION.";")))
$bSkipMenuItem = true;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Этот поиск практически ничего не может найти! Но вы всё-таки попытайтесь, вдруг повезет.
Найдено: 98
+162
if(count($MenuItem)>4)
{
$CONDITION = $MenuItem[4];
if(strlen($CONDITION)>0 && (!eval("return ".$CONDITION.";")))
$bSkipMenuItem = true;
}
1С-Битрикс: Управление сайтом 11.0.3
+177
"
<td><span>\".setDiskont2(\$data[price]*{$as_Quantity}, $current_site[Skidka], \$data[Discount]).\"</span></td>
<th></th>
</tr>
")."
".as_if($totalsum+=as_query("SELECT price FROM Data".$as_ObjectID." WHERE Data_ID=$as_ItemID","\$data[price]")*$as_Quantity*$as_Discount,"")."
")."
Оцените.
Этот кусок кода хранится в поле таблицы бд, в котором хранится кусок шаблона формы корзины интернет-магазина.
Функция на шестой строке выводит общую сумму заказа при eval.
У меня ушло более двух часов, чтобы розыскать логику внутри семикратной (! я не шучу) вложенности include_once, чтобы в итоге понять, что запрос который я искал хранится в самой бд, причем не просто храниться, а хранится внутри бд, внутри php который хранится внутри html... Сам Доминик Кобб позавидовал бы степени вложенности моих кошмаров %)
+164
if ( $fldType[$i] == 10) {
eval("\$fldValue[\$i] = \$f_".$fld[$i].";");
}
else if ( $fldType[$i] != 6 ) {
eval("\$fldValue[\$i] = trim((is_array(\$f_".$fld[$i].")?\$_FILES['f_".$fld[$i]."']['tmp_name']:stripslashes(\$f_".$fld[$i].")));");
}
if ($fldType[$i]==8) {
eval("if (\$f_".$fld[$i]."_day || \$f_".$fld[$i]."_month || \$f_".$fld[$i]."_year || \$f_".$fld[$i]."_hours || \$f_".$fld[$i]."_minutes || \$f_".$fld[$i]."_seconds) \$fldValue[\$i] = sprintf(\"%04d-%02d-%02d %02d:%02d:%02d\",\$f_".$fld[$i]."_year,\$f_".$fld[$i]."_month,\$f_".$fld[$i]."_day,\$f_".$fld[$i]."_hours,\$f_".$fld[$i]."_minutes,\$f_".$fld[$i]."_seconds);");
}
NetCat, я это даже прокомментировать не могу
+169
reset($err_list);
//создаем все необходимые переменные
while ($var = each($err_list)) {
eval('if(!isset($_POST["'.$var['key'].'"])){$_POST["'.$var['key'].'"]="";}');
}
...
+167
$used_vars = Array ("s_user","s_roles","s_error");
for ($i = 0; $i < sizeof($used_vars); $i++) {
eval ("unset(\$".$used_vars[$i].");");
}
+160
// File: /controllers/register.php
//......
$sql = 'INSERT INTO `users` SET `ID`=NULL, `login`="'.mysql_real_escape_string(substr($_POST['login'], 0, 12)).'", `pass`= blah blah blah....';
//......
// File: /templates/default/index.tpl
/*
//...
<td><div>Hello, <b>{LOGIN}</b></div><!---- blah blah blah ---><div>Server time: <?php echo getCurrentTime();?></div>
//
*/
//File: /index.php
//......
$sql = 'SELECT * FROM `users` WHERE `id`=........';
$data = SYS::$db->getDataRow($sql);
if(sizeof($data)>0) {
showTeplate(TEMPLATE_NAME, 'index', $data);
}
//......
//Function showTeplate();
function showTeplate($tpl_name, $file_name, $data) {
$template_code = file_get_contents(TPL_PATH.'/'.$tpl_name.'/'.$file_name.'.'.TPL_EXT);
foreach($data as $name=>$value) {
$template_code = str_replace('{'.strtoupper($name).'}', $value, $template_code);
}
//......
eval($template_code);
//......
}
Внимание, загадка! Найти уязвимость.
+166
for($i=0,$n=count($vars);$i<$n;$i++){
eval(' $'.$vars[$i].'=isset($_POST["'.$vars[$i].'"])? addslashes(trim($_POST["'.$vars[$i].'"])) : ""; ');
}
В недрах самописной crm)
+170
function load_class($module, $class) {
$class_inc = strtoupper($class) . "_INC";
$file_inc = $class . ".inc";
if (!file_exists(MODROOT.$module."/lib/".$class.".inc")) {
echo "ERROR Loading Class: $class<BR>";
echo " Loading Module: $module<BR>";
// echo MODROOT.$module."/lib/".$class.".inc";
exit;
}
else {
$load_class = "if (!defined(\"".$class_inc."\")) {";
$load_class .= "include(\"".MODROOT.$module."/lib/". $file_inc ."\");";
$load_class .= "define(\"".$class_inc."\",\"1\");";
$load_class .= "}";
}
return $load_class;
}
// вызов
eval(load_class("module", "className"));
Fffuf
+155
// Функция подключения файлов шаблонов -----------------------------------------------------------------
function tpl_include($filepath, $title = '', $content = '') {
global $lang, $lang_array;
$tpl_body = str_replace("\n", '', file_get_contents($filepath));
$tpl_body = preg_replace('#\{loop (.*?)\}(.*?)\{\/loop\}#i', "\nEOL;\nforeach (\\1 as \$var=>\$val) echo <<<EOL\n\\2\nEOL;\necho <<<EOL\n", $tpl_body);
$tpl_body = preg_replace('#\{const (.*?)\}#i', "\nEOL;\necho \\1;\necho <<<EOL\n", $tpl_body);
$to_eval = "echo <<<EOL\n".$tpl_body."\nEOL;\n";
eval($to_eval);
}
// -----------------------------------------------------------------------------------------------------
По следам http://govnokod.ru/5658.
Шаблонизатор этот жив и кочует из проекта в проект.
Можно ссылаться на переменные из массива $lang, где хранится локализация и на $title и $content. Вот так - {$title}.
Можно ссылаться на любые константы. Например, {const ROOT_PATH}.
Можно делать цикл {loop $array}{/loop}, где внутри доступны переменные {$var} и {$val}.
Полностью избавляет от шорт-тегов, которые скоро уже и уберут из похапе.
Работает лишь чуть медленнее include с шорт-тегами (0.8 против 1.2 на 10к прогонов) и, разумеется, быстрее Смарти.
При необходимости в каком-то проекте в чем-то еще - можно легко добавить.
В общем - изящное вонючее решение.
+150
$black = "eval|file_get_contents|mysql_(.*?)|include|require|readfile|show_source|highlight|import_request_variables|extract|parse_str|assert|passthru|exec|system|shell_exec|proc_open|fopen|echo";
if(preg_match("#\<\?(.*?)($black)(.*?)\?\>#i", $template)){
exit ("1");
break;
}