Манипуляции с логином администратора в комментариях

Помните статью, в которой мы редактировали сообщения об ошибках на странице входа в админку? Для того, чтобы недоброжелатели на усекли наш настоящий логин.

Сегодня же мы представим себя в шкуре тех самых недоброжелателей, которым позарез понадобился логин администратора в WordPress. Возможно у нас уже даже появилось несколько догадок посчет этого и мы хотим убедиться в своей правоте на странице /wp-admin путём подстановки в форму входа.

В итоге натыкаемся на хрень:

ошибка при подборе на английском

Успокаивает лишь то, что админка не залочена по IP и автор либо лентяй, либо нуб. Не замечаете ничего подозрительного?

Да ведь сам движок на русском, а ошибка на английском, это значит, что владелец сайта просто скопировал готовый хук с какого-то зарубежного блога как есть и сидит довольный, чувствуя себя в безопасности.

И где же можно выудить логин? В комментах уж.

Нужно найти комментарии, оставленные администратором. В основном это определяется по контексту, хотя зачастую они бывают выделены при помощи CSS-стилей.

Итак, нашли. Где может быть логин — либо прямо в имени, либо в CSS-классе.

логин админа в css-классе

Отлично, администраторский юзернейм у нас в руках! (в примере это boss5)

А теперь защищаем свой собственный сайт:

Скрываем логин в имени комментирующего

Тут два простейших способа, первый — через админку. Заходим в «Ваш профиль», вписываем имя и фамилию (естественно никто вас не заставляет указывать настоящие) и меняем отображение — подробнее на скрине:

меню профиль пользователя WordPress

Второй способ — вставляем этот код в functions.php:

function hide_login_in_name($author){
	if(strstr($author,"boss5")) {
		// меняем boss5 на свой логин
		return "Миша";
	}
	// т.е. вместо логина будет отображаться например ваше имя
	return $author;
}
 
add_filter('get_comment_author', 'hide_login_in_name');

Избавляемся от логина в CSS-классе

Код вставляем туде же.

function hide_login_in_css_class( $classes ) {
	foreach( $classes as $key => $class ) {
		if(strstr($class, "comment-author-boss5")) {
		// меняем boss5 на свой логин
			$classes[$key] = 'comment-author-admin';
			// новый css класс в комментах администратора
		}
	}
	return $classes;
}
 
add_filter('comment_class', 'hide_login_in_css_class');

Почему я выбрал класс «comment-author-admin»? А пускай злоумышленники думают, будто бы у нас на блоге используется логин администратора по умолчанию.

Хочу обратить внимание на отдельный случай.

Допустим, у меня крупный портал, на котором зарегистрированы тысячи пользователей. Не хотелось бы палить их юзернеймы в коде, верно? В таком случае лучше избавиться от CSS-класса вообще! Для этого код:

function remove_css_class( $classes ) {
	foreach( $classes as $key => $class ) {
		if(strstr($class, "comment-author-")) {
			unset( $classes[$key] );
		}
	}
	return $classes;
}
add_filter('comment_class', 'remove_css_class');

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии 8

  • BlockHoster 2 марта 2012 #

    Интересная статья!

  • Ольга 29 октября 2012 #

    Да, уж... Эти злоумышленники - все дыры надо заделывать, чтобы сложнее добраться было.

  • Master-It 16 февраля 2013 #

    Кстати есть еще один очень простой способ, который я совершенно случайно обнаружил == сайт.рф/wordpress/?author=1 а для админки, грамотный .htaccess просто необходим:)

    • Ярослав 2 февраля 2015 #

      На такой случай надо менять ID автора на непредсказуемый номер. Я так и сделал. Но всё равно осталась одна нерешённая задача - новый ID виден в исходном коде страницы, вот в таком виде:

      <body class="archive author author-admin author-1 custom-background">

      Может быть кто нибудь знает, как скрыть этот класс из исходного кода страницы?

      • Миша 2 февраля 2015 #

        При помощи фиьтра body_class.

        • Ярослав 2 февраля 2015 #

          Ничего я там не понял! ))

          У меня в header.php была такая строка

          <body <?php body_class(); ?>>

          Я заменил её на

          <body>

          И информация про ID автора исчезла из исходного кода страницы.

          Можно так делать?? ))

          • Миша 2 февраля 2015 #

            Можно, только осторожно 🙂

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.