ОБСУЖДЕНИЕ

есть в этом коде уязвымость?

6 сообщений1 просмотровОткрыта
#1
PHP

<?php


if (!isset($_GET['dir']))
{
$_SESSION['category'] = 21;
}
else
{
$_SESSION['category'] = $_GET['dir'];
}

if (!isset($_SESSION['category']) || mysql_result(mysql_query("SELECT COUNT(*) FROM `smile_dir` WHERE `id`='".intval($_SESSION['category'])."'"),0) == 0)
{
// Находим id категории если ранее не смотрели

$category = mysql_fetch_assoc(mysql_query("SELECT * FROM `smile_dir` LIMIT 1"));
$_SESSION['category'] = $category['id'];
}

$q = mysql_query("SELECT * FROM `smile` WHERE `dir`='".intval($_SESSION['category'])."' ORDER BY id DESC ");
echo '<div class="layer">';
while($post = mysql_fetch_array($q))
{
echo '<a href="javascript:emoticon(\''.$post['smile'].'\')"><img src="/style/smiles/' . $post['id'] . '.gif" title="' . text($post['smile']) . '" /></a>';
}
echo '</div>';

$q = mysql_query("SELECT * FROM `smile_dir` ORDER BY id ASC");
echo '<div class="title">Категории</div>';
while ($dir = mysql_fetch_assoc($q))
{
echo '<a onclick="showContent2(\'/ajax/php/smiles.php?dir='.$dir['id'].'\')" class="onclick">' . text($dir['name']) . '</a> ';
echo '('.mysql_result(mysql_query("SELECT COUNT(*) FROM `smile` WHERE `dir` = '$dir[id]'"),0).') ';
}
?>


буду благодарен
#2
ап...
#3
$_GET['dir']; более того сессию я бы тоже фильтровал
#4
я вот этого не понял
$_SESSION['category']=21;
зачем тут надо 21?
может если в ид ставить 21 возможно срабатывает sql инъекция?
думаю это бекдор
#5
MazaXakep, Нет не похоже. Убери его да и все. Перепишу выборку. Вообще зачем такой велик
if (!isset($_GET['dir']))
{
$_SESSION['category'] = 21;
}
else
{
$_SESSION['category'] = $_GET['dir'];
}
Это нафиг вообще
if (isset($_GET['dir']))
{
$_SESSION['category'] = abs(intval($_GET['dir']));
}
Да и все
#6
Если id директории не найден, то устанавливается id 21 судя по условию.