Он аналогичен ответу @ jptsetme, но работает даже тогда, когда есть строка запроса /?dummy&author=5, и шаблон поиска RewriteRuleочень быстрый: для этого вы часто видите перехват ([0-9]*)в регулярных выражениях. Но нет необходимости тратить память на захват, когда вы не используете захваченное выражение, и достаточно совпадения для первого символа, потому что вы не хотите его принимать author=1b.
Обновление 20.04.2017
Я вижу больше «неработающих» запросов от людей, которые даже слишком глупы, чтобы запустить простое сканирование. Запрошенные URL выглядят так:
WPScan - это автоматизированная утилита, которая использует дружественные URL-адреса WordPress для определения имен пользователей. Он будет перебирать первые 10 возможных идентификаторов авторов и проверять Locationзаголовок HTTP-ответа, чтобы найти имя пользователя.
Используя, http://mysite.urlнапример ...
WPScan проверит http://mysite.url/?author=1. Если ваш сайт использует довольно постоянные ссылки, он вернет редирект 301 с Locationзаголовком http://mysite.url/author/username. Если ваш сайт не использует красивые постоянные ссылки, он вернет статус 200 (ОК), поэтому WPScan проверит фид на строку «сообщения по имени пользователя» и извлечет имя пользователя.
Что ты можешь сделать
Прежде всего, то, что кто-то может угадать ваше имя пользователя, не означает, что ваш сайт небезопасен. И на самом деле вы не можете помешать кому-то так проанализировать ваш сайт.
Тем не мение ...
Если вы действительно обеспокоены этим, я бы порекомендовал сделать две вещи:
Выключите красивые постоянные ссылки. Это заставит WPScan и подобные инструменты анализировать содержимое вашего сайта на предмет имен пользователей, а не полагаться на URL.
Заставить пользователей установить другой псевдоним. При отсутствии имени пользователя в URL инструменты сканирования будут искать «сообщения по имени пользователя» в фиде / публикации. Если вы не размещаете имена пользователей там, то они не могут быть захвачены.
Другой альтернативой является изменение вашего автора, постоянная ссылка переписывает. Есть несколько способов сделать это, и вы, вероятно, можете найти несколько на этом сайте .
Не проверено это полностью, но я думаю, что предпочтительнее удалить базовый ресурс, чем пытаться строить стены вокруг него на уровне веб-сервера. Так что в терминах WP это мешало бы обработке связанных с автором переменных запроса.
Вы можете использовать правило перезаписи .htaccess, чтобы предотвратить это раскрытие, но вы также должны обязательно использовать псевдонимы, чтобы избежать раскрытия имен пользователей в анализируемом контенте, как описано EAMann.
Правильное правило также должно удалить строку запроса из переписанного URL, иначе вы все равно будете раскрывать имя пользователя. Это должно выглядеть так:
В качестве примечания я хотел запретить перечисление имен пользователей на своем сайте, размещенном на WP Engine, что ограничивает доступ пользователей к низкоуровневым файлам конфигурации nginx. Тем не менее, они имеют раздел «Правила перенаправления» на своей панели управления, который позволяет вам сделать это. Через некоторое время мне удалось выяснить лучшую конфигурацию:
RedirectName:// choose a description for the rewriteDomain:// you *must* select a domain; "All Domains" will *not* work here!Source:^/$Destination:/?
Тогда вам нужно показать Advanced Settingsпанель ...
Match args: author=([0-9]*)Rewrite type:301Permanent
Et voila, ваши имена пользователей в безопасности [r]!
Мое профессиональное мнение как тестера проникновения для государственного агентства ... это ВСЕГДАстоит усложнить перечисление информации о вашем сайте. У немногих из вас будет веб-сайт, который поднимается над Google, сценаристом хакеров-детишек. Мы говорим о многоуровневой безопасности, и с каждым уровнем вы добавляете время и сложность к попытке проникновения. Каждый слой также добавляет набор навыков, требуемый от хакера. На WP есть несколько действительно хороших брандмауэров приложений. Ищите те, которые могут блокировать IP-адреса с повторными попытками входа пользователя или 404. Идея состоит в том, чтобы ваш брандмауэр автоматически блокировал IP-адреса, которые сканируют ваш веб-сайт на наличие страниц, которые не существуют, или пытаются повторно войти на ваш сайт. Хорошая функция также включает возможности блокировки XSS и SQL-инъекций. Подумайте об использовании All In One WP Security от Tips and Tricks HQ, Peter, Ruhul, Ivy.
Вместо .htaccessмаршрута другой альтернативой является добавление следующего кода к вашей дочерней теме functions.php:
# Redirect author page to homepage
add_action('template_redirect','wpse_46469_author_page');function wpse_46469_author_page(){# If the author archive page is being accessed, redirect to homepageif( is_author()){
wp_safe_redirect( get_home_url(),301);exit;}}
Кроме того, вы можете изменить ссылки автора по умолчанию, которые добавляются к имени пользователя каждой страницы, на что-то другое (например, домашнюю страницу), используя следующее:
# Replace author URL with the homepage
add_filter('author_link','wpse_46469_author_link');function wpse_46469_author_link(){# Return homepage URLreturn home_url();}
Я знаю, что это старый пост, но для будущих ссылок я также хотел бы добавить свое решение. Это только фрагмент functions.phpвашей темы. Это оставит все на месте и работает, даже автор архивирует, но это убивает плохие запросы на перечисление.
При обнаружении он удалит переменную author из запроса, поэтому он не будет запрошен.
Если вы используете постоянные ссылки, это оставит автора архивов в такте. Кроме того, если URL будет примерно таким: /dummy?author=1это просто покажет страницу для /dummy.
Первая строка определяет только домашнюю страницу. Я объясню почему. Эта функция «перечисления пользователей» работает только на домашней странице, поэтому нет необходимости переписывать все URL.
Далее мы ищем author=строку запроса. Это очевидно.
Наконец, мы просто показываем исходную страницу без каких-либо блоков, перенаправлений (301, 302) или запретов (403). Разве это не должно действовать как страница с любым другим бесполезным параметром?
Ответы:
Простое решение, которое я использую в
.htaccess
:Он аналогичен ответу @ jptsetme, но работает даже тогда, когда есть строка запроса
/?dummy&author=5
, и шаблон поискаRewriteRule
очень быстрый: для этого вы часто видите перехват([0-9]*)
в регулярных выражениях. Но нет необходимости тратить память на захват, когда вы не используете захваченное выражение, и достаточно совпадения для первого символа, потому что вы не хотите его приниматьauthor=1b
.Обновление 20.04.2017
Я вижу больше «неработающих» запросов от людей, которые даже слишком глупы, чтобы запустить простое сканирование. Запрошенные URL выглядят так:
Таким образом, вы можете расширить правило выше:
источник
Ты не можешь
WPScan - это автоматизированная утилита, которая использует дружественные URL-адреса WordPress для определения имен пользователей. Он будет перебирать первые 10 возможных идентификаторов авторов и проверять
Location
заголовок HTTP-ответа, чтобы найти имя пользователя.Используя,
http://mysite.url
например ...WPScan проверит
http://mysite.url/?author=1
. Если ваш сайт использует довольно постоянные ссылки, он вернет редирект 301 сLocation
заголовкомhttp://mysite.url/author/username
. Если ваш сайт не использует красивые постоянные ссылки, он вернет статус 200 (ОК), поэтому WPScan проверит фид на строку «сообщения по имени пользователя» и извлечет имя пользователя.Что ты можешь сделать
Прежде всего, то, что кто-то может угадать ваше имя пользователя, не означает, что ваш сайт небезопасен. И на самом деле вы не можете помешать кому-то так проанализировать ваш сайт.
Тем не мение ...
Если вы действительно обеспокоены этим, я бы порекомендовал сделать две вещи:
Другой альтернативой является изменение вашего автора, постоянная ссылка переписывает. Есть несколько способов сделать это, и вы, вероятно, можете найти несколько на этом сайте .
источник
Не проверено это полностью, но я думаю, что предпочтительнее удалить базовый ресурс, чем пытаться строить стены вокруг него на уровне веб-сервера. Так что в терминах WP это мешало бы обработке связанных с автором переменных запроса.
PS обратите внимание, что это полностью уничтожит авторские архивы , что может соответствовать или не соответствовать уровню паранойи :)
источник
Вы можете использовать правило перезаписи .htaccess, чтобы предотвратить это раскрытие, но вы также должны обязательно использовать псевдонимы, чтобы избежать раскрытия имен пользователей в анализируемом контенте, как описано EAMann.
Следующий блог описывает, как это сделать, но содержит опечатку в правиле перезаписи: http://www.question-defense.com/2012/03/20/block-wordpress-user-enumeration-secure-wordpress-against-hacking
Правильное правило также должно удалить строку запроса из переписанного URL, иначе вы все равно будете раскрывать имя пользователя. Это должно выглядеть так:
Работает хорошо для нас.
источник
Я хотел бы добавить, что вы можете сделать это и на nginx. Проверьте:
» Блокировка перечисления пользователей WordPress на nginx - www.edwidget.name
В качестве примечания я хотел запретить перечисление имен пользователей на своем сайте, размещенном на WP Engine, что ограничивает доступ пользователей к низкоуровневым файлам конфигурации nginx. Тем не менее, они имеют раздел «Правила перенаправления» на своей панели управления, который позволяет вам сделать это. Через некоторое время мне удалось выяснить лучшую конфигурацию:
Тогда вам нужно показать
Advanced Settings
панель ...Et voila, ваши имена пользователей в безопасности [r]!
источник
Я полностью заблокировал перечисление пользователей из WPScan, добавив следующее в htaccess
Мое профессиональное мнение как тестера проникновения для государственного агентства ... это ВСЕГДАстоит усложнить перечисление информации о вашем сайте. У немногих из вас будет веб-сайт, который поднимается над Google, сценаристом хакеров-детишек. Мы говорим о многоуровневой безопасности, и с каждым уровнем вы добавляете время и сложность к попытке проникновения. Каждый слой также добавляет набор навыков, требуемый от хакера. На WP есть несколько действительно хороших брандмауэров приложений. Ищите те, которые могут блокировать IP-адреса с повторными попытками входа пользователя или 404. Идея состоит в том, чтобы ваш брандмауэр автоматически блокировал IP-адреса, которые сканируют ваш веб-сайт на наличие страниц, которые не существуют, или пытаются повторно войти на ваш сайт. Хорошая функция также включает возможности блокировки XSS и SQL-инъекций. Подумайте об использовании All In One WP Security от Tips and Tricks HQ, Peter, Ruhul, Ivy.
источник
Вместо
.htaccess
маршрута другой альтернативой является добавление следующего кода к вашей дочерней темеfunctions.php
:Кроме того, вы можете изменить ссылки автора по умолчанию, которые добавляются к имени пользователя каждой страницы, на что-то другое (например, домашнюю страницу), используя следующее:
источник
Я знаю, что это старый пост, но для будущих ссылок я также хотел бы добавить свое решение. Это только фрагмент
functions.php
вашей темы. Это оставит все на месте и работает, даже автор архивирует, но это убивает плохие запросы на перечисление.Что оно делает:
author=1
Если вы используете постоянные ссылки, это оставит автора архивов в такте. Кроме того, если URL будет примерно таким:
/dummy?author=1
это просто покажет страницу для/dummy
.Благодаря ответу Rarst на этот вопрос и https://perishablepress.com/stop-user-enumeration-wordpress/
источник
Я хочу опубликовать свое собственное видение:
Первая строка определяет только домашнюю страницу. Я объясню почему. Эта функция «перечисления пользователей» работает только на домашней странице, поэтому нет необходимости переписывать все URL.
Далее мы ищем
author=
строку запроса. Это очевидно.Наконец, мы просто показываем исходную страницу без каких-либо блоков, перенаправлений (301, 302) или запретов (403). Разве это не должно действовать как страница с любым другим бесполезным параметром?
источник