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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Дыры в скрипте. Модификация.

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: glsv (Дизайнер)   (08.03.2005 в 07:34)   письмо автору
 
   для: evgen_17   (08.03.2005 в 00:17)
 

Хм… дело в другом. Нормальная проверка скрипта на дыры требует значительных временных затрат. Ответ на вопрос и аудит безопасности – это далеко не одно и тоже. Работы по аудиту безопасности сайта могут перекрывать стоимость его разработки и создания. Если бы наличие дыр можно было бы определять одним взглядом, то и дыр бы не было.

Старайтесь задавать более конкретные вопросы.

   
 
 автор: evgen_17   (08.03.2005 в 00:17)   письмо автору
 
   для: evgen_17   (07.03.2005 в 21:04)
 

Больщое ВСЕМ спасибо. Видимо достал уже своими вопросами... Хотя на то он и форум, чтобы их задавать... ;(((

   
 
 автор: evgen_17   (07.03.2005 в 21:04)   письмо автору
 
   для: evgen_17   (07.03.2005 в 02:30)
 

Мда... Похоже таким образом помощи не добиться...
Вот скрипт:

<?
(preg_match("/[^-0-9a-z_]/i",$var))
/********************************************************************
Какие изменения сюда нужно внести, чтобы добавить использование пробелов?
                                И вообще, правильно ли оно написано?
********************************************************************/
?>

Вот второй скрипт:

<?
if(empty($uid))
    {
        echo 
'<table border = 1 bordercolor=#336699 cellspacing=2 cellpadding=2  valign=top width = 645 align = center>
                <tr><td bgcolor=#FFCC33><font color=red size = 3>
                <b><center>Поле "Логин" 
                    не может быть пустым.
            </center></b></font></td></tr></table>'
;
    
$err "yes";
    }
elseif (
preg_match("/<.*?(script|object|iframe|applet|meta|style|form).*?>/"$uid))
    { 
            echo 
'<table border = 1 bordercolor=#336699 cellspacing=2 cellpadding=2  valign=top width = 645 align = center>
                        <tr><td bgcolor=#FFCC33><font color=red size = 3>
                        <b><center>Логин не может содержать 
                                        элементы кода.
                </center></b></font></td></tr></table>'
;
    
$err "yes";
exit();    }
elseif (
preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$uid)) 
    {
            echo 
'<table border = 1 bordercolor=#336699 cellspacing=2 cellpadding=2  valign=top width = 645 align = center>
                        <tr><td bgcolor=#FFCC33><font color=red size = 3>
                        <b><center>Логин должен содержать
                                                 русские и латинские буквы, цифры, знак подчёркивания и пробел.
                        </center></b></font></td></tr></table>'
;
    
exit();    }
elseif (
strlen($uid) < || strlen($uid) > 10)
    {
            echo 
'<table border = 1 bordercolor=#336699 cellspacing=2 cellpadding=2  valign=top width = 645 align = center>
                        <tr><td bgcolor=#FFCC33><font color=red size = 3>
                        <b><center>Логин должен содержать от 4 до 10 символов.
                </center></b></font></td></tr></table>'
;
exit();    }
else
    {
            echo 
"<table border = 1 bordercolor=#336699 cellspacing=2 cellpadding=2  valign=top width = 645 align = center>
                        <tr><td bgcolor=#FFCC33><font color=#336699 size = 3>
                        <b><center>Логин <b><i>[
$uid]</i></b> 
                                        принят.
                </center></b></font></td></tr></table>"
;
    }   
                                        
$uid htmlspecialchars(stripslashes($uid));
                                        
$uid trim($uid );
                                        
if (!
get_magic_quotes_gpc()) 

        
$uid mysql_escape_string($uid );
}
                                        
$uid addslashes($uid );
                                        
?>

Жду предложений, спасибо заранее...

   
 
 автор: evgen_17   (07.03.2005 в 02:30)   письмо автору
 
   для: evgen_17   (06.03.2005 в 21:44)
 

Срочно требуется помощь... Проверьте пожалуйста скрипт на дыры... Нужны советы...

   
 
 автор: evgen_17   (06.03.2005 в 21:44)   письмо автору
 
   для: evgen_17   (22.02.2005 в 20:54)
 

Вот архив с двумя файлами. В одном из них скрипт который проверяет информацию, введённую пользователем, в данном примере только одно значение - $uid. (check.php) В другом вопрос по регулярному выражению. (question.php) Ели можно, то проверьте пожалуйста его (check.php) на дыры, если есть ещё варианты добавления защиты, то подскажите, желательно прямо в файлах написать и отправить обратно. Но можно и в форум строки выложить. Я ещё не слишком в этом силён, но помоему этот скрипт от SQL - инекций не очень - то сильно защищает. Можно тоже варианты подсказать, если есть... Спасибо.

   
 
 автор: XPraptor   (28.02.2005 в 10:14)   письмо автору
 
   для: Atom   (27.02.2005 в 20:47)
 

А тогда, когда скрипт вписанный в базу является инъекцией.

   
 
 автор: cheops   (27.02.2005 в 21:42)   письмо автору
 
   для: evgen_17   (27.02.2005 в 20:13)
 

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2384

   
 
 автор: cheops   (27.02.2005 в 21:36)   письмо автору
 
   для: evgen_17   (27.02.2005 в 20:13)
 

>Если в обработчик включить или прямо в нём написать (кстате, как лучше?)
1) Лучше разделять форму и обработчик - код будет проще, поэтому при создании и модифицировании вероятность сделать ляп будет меньше.
>, то что Вы скажите?
2) Лучше убрать замену обратных кавычек - это действие лишнее
3) Не очень понятно, что делает эта строка
<?php
  $uid 
preg_replace("/[a-z0-9]/i""",$_POST['uid'] );
?>

Нужны только спец-символы?
4) Этот код, тоже по-моему лишний
<?php
$uid 
strip_tags($_POST['uid'] );
?>

>Какой бы код не ввели - она всё преобразует в обычный текст?
Нет она только заменит HTML-код на его эквиваленты, но этого достаточно.
5) На самом деле вы зря беспокоитесь, так как у вас ввод ограничен 10 символами, то у злоумышленика нет практически никаких шансов написать какой-бы то нибыло код.
6) Плохо вот что, вы в каждой строке переопределяете переменную $uid, так как вместо того, чтобы использовать $uid в качестве параметра у вас везде $_POST['uid']. Поэтому реальна вся защита состоит из
<?php
  $uid 
addslashes($_POST['uid']);
?>


PS Больше внимания следует уделять именно таким вещам (6), как правило дыры появляются из-за невнимательности :).

   
 
 автор: Atom   (27.02.2005 в 20:47)   письмо автору
 
   для: XPraptor   (24.02.2005 в 14:47)
 

ХРаптор,
а когда mysql_escape_string не спасает от инъекций?

   
 
 автор: evgen_17   (27.02.2005 в 20:13)   письмо автору
 
   для: cheops   (23.02.2005 в 00:57)
 

Сообщение перенесено в новую тему...

   

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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