Проверка правильности alt_name в URL новости
Проблема: Недостаточная фильтрация входящих данных.
Ошибка в версии: все
Степень опасности(SEO): Высокая
Автор фикса: RooTM
Для исправления откройте файл engine/modules/show.full.php и найдите:
$news_found = TRUE;
ниже добавьте один из вариантов:
отдает 404 ошибку
if($config['allow_alt_url'] == "yes"){
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );
if($row['alt_name'] != trim($parse_alt_name[1]) )$news_found = FALSE; if( !$news_found ) break;
}
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );
if($row['alt_name'] != trim($parse_alt_name[1]) )$news_found = FALSE; if( !$news_found ) break;
}
делает редирект на правильный URL
if($config['allow_alt_url'] == "yes"){
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );
if( $row['alt_name'] != trim( $parse_alt_name[1] ) ){
$true_url = str_replace( $parse_alt_name[1] , $row['alt_name'] , $_SERVER["REQUEST_URI"] );
header('HTTP/1.1 301 Moved Permanently');
@header ( 'Location: ' . $true_url );
exit;
}}
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER["REQUEST_URI"] , $parse_alt_name );
if( $row['alt_name'] != trim( $parse_alt_name[1] ) ){
$true_url = str_replace( $parse_alt_name[1] , $row['alt_name'] , $_SERVER["REQUEST_URI"] );
header('HTTP/1.1 301 Moved Permanently');
@header ( 'Location: ' . $true_url );
exit;
}}