Меню

GET параметры, дубли и конкуренты. Защищаем сайт на WordPress

WordPress GET параметры и дубли

Очень удобная CMS WordPress, которой я пользуюсь, имеет все же кучу недостатков, среди которых — дубли различного происхождения. Те, что генерируются автоматически, еще можно как-то "победить". Но что делать, если ваш конкурент решил "насолить" и воспользовался недостатком при обработке GET параметров?

Кто не в курсе, проверьте у себя: добавьте к любой странице знак "?" и наберите дальше что угодно, ту же "абракадабру". Как ни странно, такая страница открывается и отдает код ответа сервера "200 ок". Если злоумышленник поставит ссылку на такую страницу, поздравляю, у вас в индексе появится полноценный дубль! И таких "сюрпризов" можно создать тысячи! Самый простой способ вам отомстить за что-то или просто подвинуть как конкурента...

Меня такая ситуация сильно беспокоила. Но вот поиски на просторах интернета закончились ничем: мудреные статьи "вокруг да около" так и не предложили конкретного решения. С моим уровнем знаний программиста не то что редиректы писать не стоит, даже готовое понять потрудиться надо..

Ломала я свой блог около двух недель, и все без толку: ни одно из решений не подошло. Пришлось обратиться за помощью к знакомому программисту, известному в интернете как andi panov (есть статья об этом на его блоге, но там решение при помощи плагина). Через 10 минут (!) он сваял мне небольшой код, который решил мою проблему.

Делюсь с читателями:

// если запрос начинается с ?s= — это поиск по сайту, разрешаем
if ( '/?s=' != substr($_SERVER['REQUEST_URI'], 0 ,4) && empty($_GET['preview']) ) {
// теперь проверим ситуацию с прочими запросами
$t = explode('?', $_SERVER['REQUEST_URI']);
// есть get-параметры
if ( ! empty($t[1]) ) {
// редиректим на адрес
header('Location: ' . $t[0], 1, 301);
exit;
}
}

Вставить его надо на вторую строчку в файле index.php, который лежит в корне сайта (а не в папке с темой!). Сохраняем и наслаждаемся результатом. Спасибо, Andi!

Важно! В ходе тестирования выяснилось: данный код "отключает" поиск от Яндекса или Гугла, а также отписку от комментариев. У меня на блоге я продолжаю использовать код, а также на клиентском сайте, — потому что не использую поиск от поисковиков и отписка у меня и так не предусмотрена (отправляются только ответы на оставленный комментарий, поэтому людей такая функция не раздражает).

Оставить комментарий
  1. У меня оказывается эта беда присутствовала, а я даже и не подозревал.Спасибо, Надежда, за информацию. Воспользуюсь кодом.

    • Привет, Андрей! Эта беда присутствует у всех, чаще всего это не имеет значения. Но если конкуренты возьмут твой сайт "на прицел", то будут большие проблемы. Думаю, разумно обезопасить себя заранее )

  2. От дублей я избавлялся. А вот над такой проблемой я не задумывался, подумаю над этим на досуге! :-)

  3. Интересно. Надо попробовать. Проблема с дублями, это извечная проблема.

  4. Надежда, спасибо за информацию. А почему тебе не подошел подобный способ защиты с помощью плагина? Неужели в плагине код длинее и мощнее? Вот сейчас я и думаю, воспользоваться плагином или кодом?

    • Ну плагин я не пробовала, не могу сказать, что лучше. Мне не сложно добавить в файлик небольшой код, поэтому такой способ мне нравится. Вообще, спроси у автора статьи, он даст квалифицированный ответ, не то что я ))

    • Мне тоже не сложно вставить кодик в файл,но я понимаю, что при обновлении WP код придеться вставлять заново.Почему то уверен в том, что я и еще многие об этом забудут и будут думать, что они до сих пор защищены :))

    • Да, этот момент сильно усложняет нам жизнь. Может, поэтому я и записала себе "шпаргалку" на своем блоге ))

    • Игорь, здравствуйте.
      На самом деле, плагин появился уже после того, как с Надеждой пообщались «на тему», благодарите её :)
      Преимущество плагина — после обновления движка код не слетит.
      Преимущество размещения в корневом index.php — код срабатывает сразу, что несколько быстрее.

  5. Данную проблему не решает robots.txt и canonical url?

    • Привет! Роботс точно не решает. А канониклы может и помогут... Хотя не помогают же с другими типами дублей, особенно если на дубль поставили хорошую ссылку.

    • пойду искать что нибудь похожее для Drupal

    • Я не спец конечно, но что если попробовать этот код у себя?

  6. Теперь у конкурентов появился новый план, по поводу завалить мой блог. Дело в том, что на меня (блог - www.advdk.com) давно охотятся - пытаются взломать и добавить какие-то странные коды со своими зашифрованными ссылками, но не тут-то было! Все их попытки были погашены и теперь пускай только сунуться. Я поставил такую защиту, что поставленные ссылки будут завалены из-за угрозы моему блогу.

    Надежда, спасибо тебе за статью! Многим блоггерам будет очень полезно прочитать ее и сделать то, что описала.

    • Привет! Не знала, что у тебя такие неприятности. Вот почему мой антивирус ругался на твой блог. Вот "нехорошие люди"... А что за защиту ты использовал? Вдруг пригодится? Блокировка входа по ip не помогла?

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

    Возможно ты не замечала, но я много терял трафика? То 10, то 100, то 600. Задрали... Но я все равно не сдамся и победа будет за мной!

    • Леша, а твой сайт не открывается (( и ожидание левого ресурса внизу светится...

    • ожидание netdna.bootstrapcdn что-то вроде этого и ждала минут 5 пока сайт открылся. Что это?

  8. Ну вот, твой браузер наверное положил в кэш предыдущий вариант открывания моего блога. Я проверил его сейчас в одном отличном сервисе, вот ссылка на результат: ping-admin.ru/free_test/result/1446748894i8cg03lxim3f7rcc45nkr.html

    Техническая проверка блога тоже показала отличные результаты.

    Спасибо тебе, что переживаешь за мои труды!

    • Ясно, рада, что сейчас все ок. Да, позже сайт стал грузиться. Очень жаль, что ты столкнулся с такими проблемами...

  9. Как оказалось, это было очередное нападение на мой блог. При загрузки происходило много запросов к базе данных от посторонних ресурсов. Но слава Богу отбились.

  10. Недавно мне показали что если к сайте дописать /?autor=1 то можно узнать логин главного админа. При помощи вашего кода можно от этого защититься! На днях его всё таки обязательно поставлю!

    • Андрей, логин можно спрятать и другими способами. Нужно убрать ID с номером 1 и скрыть логин автора, например, с помощью плагина iThemes Security

    • Я хочу найти способ такой, чтобы без плагина!:)

    • Можно и без плагина, но нужно уметь работать с базами данных. Я там теряюсь, поэтому воспользовалась плагином )

  11. Привет.

    Интересный способ.

    Только есть одно НО! Я протестировал.

    Во-первых, перстала работать форма отписки от комментариев, потому что код возвращает на главную страницу перенаправление отписки.

    Во-вторых, самое ужасное, перестает работать поиск от Яндекса (Гугла). Поэтому это не решение!

    • Спасибо, Александр, что поделились наблюдениями. У меня такие проблемы не возникают, потому что на блоге нет поиска от поисковиков и отписки у меня нет, поэтому не знала.

    • Точно, не работает. Вернул всё назад.

  12. Привет надежда, да в движке вордпресса очень много препятствий, но эта наша плата за удобство и легконастраиваемость. Статья требует внимания, и ее надо применять.

  13. Надежда, спасибо за код. Себе тоже установил. Но, проблема ещё вот какая. Если после адреса страницы поставить /1 можно дальше подряд 2, 3 и т.д, то страница откроется по этому адресу. Это тоже дубли. У меня так и у Вас и ещё много у кого. Как решить эту проблему не спросите знакомого Вам специалиста. Если что узнаете, отпишитесь пожалуйста.

    • Оххх, Дмитрий! Я уже радовалась, что все лазейки закрыла. Придется думать дальше, спасибо за подсказку о_О

  14. Еще раз спасибо Андрею, воспользовалась кодом! Я всегда говорила, Андрей скромный гений, молодец. Спасибо за хорошую статью Надежда.

  15. Ничего себе))) Была очень удивлена увидев свой блог в качестве примера... Но проблему быстро исправила поставив плагин, мне не хочется чтобы моя форма поиска отключилась. Спасибо за статью и выявленную недоработку

    • Привет ) Рада, что понравилось ) Я копаю и копаю, столько "дыр" уже нашла в Вордпрессе. В большинстве случаев такие мелочи не опасны. но вот если "найдет коса на камень", хоть какое-то решение проблемы, да есть )

  16. Обновил плагин.
    Теперь параметры можно формировать вручную, дополняя/изменяя предустановленные.

    Универсальный вариант в принципе сделать невозможно — любой плагин может вводить и использовать свой набор параметров.

    ЗЫ: спасибо Наталье на нежданный пинок :D

  17. Хорошая статья и по делу. Хоть у меня и нет пока что таких дублей, но надо обезопаситься дополнительно

Здесь вы можете оставить отзыв

* Текст комментария
* Обязательные для заполнения поля

Внимание: все отзывы проходят модерацию.