|
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 это все зависит как у вас встроена этот форум, если он использует эту функцию, то тогда тоже надо ее пофиксить.
|
|