Показать сообщение отдельно
Soniks вне форума      Старый #3  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
26.06.2005, 16:21

Дырка очень опасная так что фиксим все!

Открываем modules/Your_Account/index.php
Находим функцию:
PHP код:
 function avatarlinksave($avatar) {
        global 
$user_prefix$db$module_name$user$cookie;
        if (
is_user($user)) {
                
getusrinfo($user);
                
cookiedecode($user);
                include(
"header.php");
                
title("Avatar Selection Successful!");
                
OpenTable();
                
nav();
                
CloseTable();
                
OpenTable();
                
$db->sql_query("UPDATE ".$user_prefix."_users SET user_avatar='$avatar', user_avatar_type='2' WHERE username='$cookie[1]'");
                echo 
"<center><font class=\"content\">Avatar for ".$cookie[1]." Saved!</center></font><br><br>";
                if (
ereg("(http)"$avatar)) { echo "<center>Your New Avatar:<br><br><IMG alt=\"\" src=\"$avatar\"><br><br>[ <a href=\"modules.php?name=$module_name&op=edituser\">Back to Profile</a> | <a href=\"modules.php?name=$module_name\">Done</a> ]<br><br></center>"; } elseif ($avatar) { echo "<center>Your New Avatar:<br><br><IMG alt=\"\" src=\"modules/Forums/images/avatars/$avatar\"><br><br>[ <a href=\"modules.php?name=$module_name&op=edituser\">Back to Profile</a> | <a href=\"modules.php?name=$module_name\">Done</a> ]<br><br></center>"; }
                
CloseTable();
                include(
"footer.php");
        }


Заменяем на:
PHP код:
 function avatarlinksave($avatar) {
    global 
$user_prefix$db$module_name$user$cookie;
if (
is_user($user)) {
        
getusrinfo($user);
cookiedecode($user);
$error false;
     if ( !
preg_match('#^(http)|(ftp):\/\/#i'$avatar) )
        {
             
$avatar 'http://' $avatar;
        }
        if ( !
preg_match("#^((ht|f)tp://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png))$)#is"$avatar) )
        {
                
$error true;
    include(
"header.php");
    
OpenTable();
    
nav();
    echo 
"<center><br><br><br>Не правильный формат ссылки!!<br><br>";
    echo 
_GOBACK."</center>";
    
CloseTable();
    include(
"footer.php");
                die();
        }
     
$avatar str_replace("\'""''"$avatar);
if(!
$error ){
include(
"header.php");
title("Выбранный Аватор Сохранен Удачно!");
OpenTable();
nav();
CloseTable();
OpenTable();
$db->sql_query("UPDATE ".$user_prefix."_users SET user_avatar='$avatar', user_avatar_type='2' WHERE username='$cookie[1]'");
echo 
"<center><font class=\"content\">Аватор для ".$cookie[1]." Сохранен!</center></font><br><br>";
if (
ereg("(http)"$avatar)) { echo "<center>Ваш новый Аватор:<br><br><IMG alt=\"\" src=\"$avatar\"><br><br>[ <a href=\"modules.php?name=$module_name&op=edituser\">Назад к Профилю</a> | <a href=\"modules.php?name=$module_name\">Завершить</a> ]<br><br></center>"; } elseif ($avatar) { echo "<center>Ваш новый аватор:<br><br><IMG alt=\"\" src=\"modules/Forums/images/avatars/$avatar\"><br><br>[ <a href=\"modules.php?name=$module_name&op=edituser\">Назад к Профилю</a> | <a href=\"modules.php?name=$module_name\">Завершить</a> ]<br><br></center>"; }
CloseTable();
include(
"footer.php");
}
    }



BuKTOp про XSS можно почитать в интернете, этого материало много, а насчет Ipb это все зависит как у вас встроена этот форум, если он использует эту функцию, то тогда тоже надо ее пофиксить.
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".