Помните статью, в которой мы редактировали сообщения об ошибках на странице входа в админку? Для того, чтобы недоброжелатели на усекли наш настоящий логин.
Сегодня же мы представим себя в шкуре тех самых недоброжелателей, которым позарез понадобился логин администратора в WordPress. Возможно у нас уже даже появилось несколько догадок посчет этого и мы хотим убедиться в своей правоте на странице /wp-admin путём подстановки в форму входа.
В итоге натыкаемся на хрень:
Успокаивает лишь то, что админка не залочена по IP и автор либо лентяй, либо нуб. Не замечаете ничего подозрительного?
Да ведь сам движок на русском, а ошибка на английском, это значит, что владелец сайта просто скопировал готовый хук с какого-то зарубежного блога как есть и сидит довольный, чувствуя себя в безопасности.
И где же можно выудить логин? В комментах уж.
Нужно найти комментарии, оставленные администратором. В основном это определяется по контексту, хотя зачастую они бывают выделены при помощи CSS-стилей.
Итак, нашли. Где может быть логин — либо прямо в имени, либо в CSS-классе.
Отлично, администраторский юзернейм у нас в руках! (в примере это boss5)
А теперь защищаем свой собственный сайт:
Тут два простейших способа, первый — через админку. Заходим в «Ваш профиль», вписываем имя и фамилию (естественно никто вас не заставляет указывать настоящие) и меняем отображение — подробнее на скрине:
Второй способ — вставляем этот код в 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');
Код вставляем туде же.
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');
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Интересная статья!
Да, уж... Эти злоумышленники - все дыры надо заделывать, чтобы сложнее добраться было.
но как я считаю, наилучший способ - заблочить админку через .htaccess
Кстати есть еще один очень простой способ, который я совершенно случайно обнаружил == сайт.рф/wordpress/?author=1 а для админки, грамотный .htaccess просто необходим:)
На такой случай надо менять ID автора на непредсказуемый номер. Я так и сделал. Но всё равно осталась одна нерешённая задача - новый ID виден в исходном коде страницы, вот в таком виде:
Может быть кто нибудь знает, как скрыть этот класс из исходного кода страницы?
При помощи фиьтра body_class.
Ничего я там не понял! ))
У меня в header.php была такая строка
Я заменил её на
<body>
И информация про ID автора исчезла из исходного кода страницы.
Можно так делать?? ))
Можно, только осторожно :)