Недостаточная фильтрация в модуле Переходы (07.09.2011)
Очередное исправление проблем с безопасностью модуля Переходы.
Степень опасности: Высокая
Ошибка в версии: все версии
Для исправления откройте файл engine/modules/referer.php и найдите:
if(preg_match("/[<][/a-zA-Z]+(.*?)[>]/", urldecode(rawurldecode($http_referer)))) {
die ( "Переход заблокирован, перенаправление:<br /><br />Пожалуйста, нажмите <a href="{$request_uri}">сюда</a>." );
}
Ниже добавьте:
if(preg_match("/[<][/a-zA-Z]+(.*?)[>]/", urldecode(rawurldecode($request_uri)))) {
die ( "Переход заблокирован, перенаправление:<br /><br />Пожалуйста, нажмите <a href="{$config['http_home_url']}">сюда</a>." );
}
Немного ниже найдите:
if (checkurl($http_referer) != "false") {
ВЫШЕ добавьте:
$request_uri = $db->safesql( trim( htmlspecialchars( strip_tags( $request_uri ) ) ) );
Ниже найдите:
$rblock = str_replace( '[slink]', "<a href="".$row['uri']."">", $rblock );
Замените на:
$rblock = str_replace( '[slink]', "<a href="".strip_tags($row['uri'])."">", $rblock );