Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Прокомментируйте код
 
 автор: Trianon   (16.03.2006 в 14:39)   письмо автору
 
 

<?php
define
('IN_TEST'1);
@include(
$_SERVER['DOCUMENT_ROOT'].'/../нескажу/нескажу.conf.php');
$defparms = array('body'=>'''pwd' => '');
foreach(
$defparms as $k => $v)  $$k = isset($_REQUEST[$k])==$v :
  (
get_magic_quotes_gpc() ?  stripslashes($_REQUEST[$k]) : $_REQUEST[$k]);

if(
$body != '')  {
  if( 
md5(md5($pwd)) != $hash)     die('unauthorized');

  echo 
"Code:<pre>".htmlspecialchars($body)."</pre>Result:<hr>";  eval($body);
}
echo 
'<form method=post>'
      
."<textarea name=body cols=100 rows=20>".htmlspecialchars($body)."</textarea>"
       
."<br /><input type=password name=pwd value='".addslashes($pwd)."' />"
        
."<input type=submit name=req value=Post /></form>'";
?>


в нескажу.con.php лежит
<?php
if(!defined('IN_TEST)) die('Hacking attempt!');
$hash = "????????????????????????????????";?>

   
 
 автор: cheops   (16.03.2006 в 14:54)   письмо автору
 
   для: Trianon   (16.03.2006 в 14:39)
 

А в каком ключе анализировать? Безопасность, читабельноть? Мне не нравится использование ? : тем более двух подряд - резко запутывается код, снижается читабельность и катострафически не нравится фраза 'Hacking attempt!', так как служит маяком взломщику, что он на на правильном пути - без неё он всё-равно доступ к 'нескажу.con.php' не получит.

   
 
 автор: Trianon   (16.03.2006 в 15:00)   письмо автору
 
   для: cheops   (16.03.2006 в 14:54)
 

В смысле безопасности и удобства применения.
Читабельность основного кода намеренно снижена, чтоб не привлекать внимание к скрипту.
Впрочем, критику стиля я тоже выслушаю с благодарностью.

Собственно, первая строка в маленьком файлике не моя, а разработчиков форума phpbb. :) Это не оправдание а объяснение. А вот остальной текст - мой.

   
 
 автор: cheops   (16.03.2006 в 15:12)   письмо автору
 
   для: Trianon   (16.03.2006 в 15:00)
 

В плане безопасности изъянов не видно, определение константы достаточно мощный метод, в плане удобства было бы хорошо при неправильном пароле тоже выводить HTML-форму для второй попытки - иначе придётся какждый раз назад возвращаться - если скриптом будут пользоваться часто - это может быть не удобно.

   
 
 автор: Trianon   (16.03.2006 в 15:28)   письмо автору
 
   для: cheops   (16.03.2006 в 15:12)
 

Что-то не так... :((( У меня в код перед выполнением попадают <br />

   
 
 автор: Trianon   (16.03.2006 в 16:22)   письмо автору
 
   для: Trianon   (16.03.2006 в 15:28)
 

Попытка N 2
<?php
define
('IN_TEST'1);
include(
$_SERVER['DOCUMENT_ROOT'].'/../нескажу/нескажу.conf.php');
$defparms = array('body'=>'echo "Hello, world!"''pwd' => '');
foreach(
$defparms as $k => $v)  $$k = isset($_REQUEST[$k])==$v :
  (
get_magic_quotes_gpc() ?  stripslashes($_REQUEST[$k]) : $_REQUEST[$k]);

if(
$body != '')
{
  
highlight_string("<?php\r\n$body\r\n?>");
  echo 
"<hr>";  if( md5(md5($pwd)) == $hash) eval($body);
}

echo 
"<form method=post>"
    
."<textarea name=body cols=100 rows=20>".htmlspecialchars($body)."</textarea>"
    
."<br /><input type=password name=pwd value='".htmlspecialchars($pwd)."' />"
    
."<input type=submit name=req value=Post /></form>";
?>

   
 
 автор: cheops   (16.03.2006 в 22:12)   письмо автору
 
   для: Trianon   (16.03.2006 в 15:28)
 

>Что-то не так... :((( У меня в код перед выполнением
>попадают &lt;br />
В текстовой области имеется ввиду?

   
 
 автор: Trianon   (16.03.2006 в 22:14)   письмо автору
 
   для: cheops   (16.03.2006 в 22:12)
 

Да. В текстовых строках внутри тестируемого примера, который неоднократно прошел через post-форму.

   
 
 автор: Trianon   (16.03.2006 в 22:15)   письмо автору
 
   для: cheops   (16.03.2006 в 22:12)
 

Может выложить сюда код без защиты? А то молчат все :( Наверное, пробуют запустить - видят, что не идет, и бросают.

   
 
 автор: cheops   (16.03.2006 в 15:07)   письмо автору
 
   для: Trianon   (16.03.2006 в 14:39)
 

А почему испльзуется $_REQUEST вместо POST - специально? Допускается авторизация через GET-методы или cookie?

   
 
 автор: Trianon   (16.03.2006 в 15:10)   письмо автору
 
   для: cheops   (16.03.2006 в 15:07)
 

Чтоб можно было какой-нибудь простенький код через url проверить.
Авторизовываться куками - эта мысль мне в голову не пришла. :)))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования