|
|
|
|
|
для: evgen_17
(08.03.2005 в 00:17)
| | Хм… дело в другом. Нормальная проверка скрипта на дыры требует значительных временных затрат. Ответ на вопрос и аудит безопасности – это далеко не одно и тоже. Работы по аудиту безопасности сайта могут перекрывать стоимость его разработки и создания. Если бы наличие дыр можно было бы определять одним взглядом, то и дыр бы не было.
Старайтесь задавать более конкретные вопросы. | |
|
|
|
|
|
|
|
для: 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) < 4 || 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
(06.03.2005 в 21:44)
| | Срочно требуется помощь... Проверьте пожалуйста скрипт на дыры... Нужны советы... | |
|
|
|
|
|
|
|
для: evgen_17
(22.02.2005 в 20:54)
| | Вот архив с двумя файлами. В одном из них скрипт который проверяет информацию, введённую пользователем, в данном примере только одно значение - $uid. (check.php) В другом вопрос по регулярному выражению. (question.php) Ели можно, то проверьте пожалуйста его (check.php) на дыры, если есть ещё варианты добавления защиты, то подскажите, желательно прямо в файлах написать и отправить обратно. Но можно и в форум строки выложить. Я ещё не слишком в этом силён, но помоему этот скрипт от SQL - инекций не очень - то сильно защищает. Можно тоже варианты подсказать, если есть... Спасибо. | |
|
|
|
|
|
|
|
для: Atom
(27.02.2005 в 20:47)
| | А тогда, когда скрипт вписанный в базу является инъекцией. | |
|
|
|
|
|
|
|
|
для: 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), как правило дыры появляются из-за невнимательности :). | |
|
|
|
|
|
|
|
для: XPraptor
(24.02.2005 в 14:47)
| | ХРаптор,
а когда mysql_escape_string не спасает от инъекций? | |
|
|
|
|
|
|
|
для: cheops
(23.02.2005 в 00:57)
| | Сообщение перенесено в новую тему... | |
|
|
|
|