Не работающий nofollow и как бороться со спам-линками в WordPress

Для кого как, но для меня было открытием, что rel=»nofollow», указанное в ссылке, не работает, так как должна. А точнее вес со страницы и бот не идут по ссылке, но вот ключевые слова из ссылки всё равно учитываются при ранжировании.

Товарищь Donncha в качестве примера-доказательства приводит следующее:
кто-то проспамил его блог комментом, где в качестве имени стояло Shih Tzu Checks (ши-тцу — это порода собак такая), а ссылка вела на страничку. И что самое интересное, при поиске по данному ключевику, страница висит в топ10, при том, что в гугле на нее нет ни одного директ линка.

Вот такие вот дела.

Но Donncha не унывает и даёт советы по борьбе с подобными спаммерами:
1. Применять плагин Comment Referrer, который добавляет в письмо для аппрува комментария ссылку, по которой к вам пришёл человек или бот.
comment referrers screenshot
На картинке чётко видно, что страничку искали по слову «Leave a reply», т.е. с целью «оставить коммент». Такое сразу можно в спам отправлять.

2. Установить плагин Delink Comment Author, при помощи которого можно выборочно удалять ссылки с имени автора, для чего рядом с комментом и в админ панели появляются соответствующие ссылки.

3. Использовать плагин Lucia’s Linky Love, позволяющий установить минимальное количество комментариев, необходимое, чтобы ссылка от автора была разрешена к отображению.
Lucia’s Linky Love Admin Panel Screenshot

От себя могу добавить, что есть ещё несколько альтернатив этим плагинам, например:

  • NoFollow Free (русская версия и описание)
  • Comment URL Control — похоже, что тоже самое, что и Delink Comment Author.
  • Nofollow Case by Case — убирает Nofollow со всех комментариев, до тех пор, пока вы в ручную не допишете в конкретный урл dontfollow. Имхо не слишком удобно, но возможно есть и некая автоматизация сего процесса.
  • WP-Ban — банит посетителей по IP, указываемому хосту, а так же рефереру. Позволяет настроить сообщение, выдаваемое забаненному посетителю.
  • Simple Trackback Validation — проверяет трекбэки: сравнивая IP-адрес отправителя трекбэка и сайта, на который ссылается трекбэк, а так проверяет страницу, с которой пришёл трекбэк, на наличие беклинка.

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

Удачи и поменьше спама и «левых» трекбэков.

[Безопасность] Список дырявых плагинов 2

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

Думаю конечному пользователю (т.е. тебе читатель) не столь интересно какими методами злоумышленники будут тебя ломать, а вот как от этого обезопасится — это уж всенепременно важно. Сегодня в список попали довольно популярные плагины (заодно сделаю мини-обзор), так что спешим обновляться:

  1. WP-People
  2. Плагин, который ищет в тексте поста имена, совпадающие с его базой и линкующий их на соответствующий профиль. Пример работы. Уязвимы версии до 1.6, с сайта же можно скачать Wp-People 1.6.1.
    Вообще пожалуй интересный плагин для создания некоего комьюнити на WordPress.

  3. Simple Forum
  4. simple forum plugin screenshot
    Плагин встраиваемого в WordPress форума. На сайте можно скачать помимо самого форума: локализации (русский язык для последней версии отсутствует, может кто посодействует автору, а?), скины и иконки.
    Если у вас стоит версия плагина «моложе» 2.1 build 237, то выключайте или обновляйте (текущую версию форума можно подглядеть в самом низу форумной страницы).

  5. WP Photo Album
  6. Одна из вариаций реализации фото-альбома для WordPress. Тут можно посмотреть как это работает (сайт автора).
    Уязвимы версии до 1.1, так что скачивайте и обновляйтесь.

  7. Search Unleashed
  8. Ещё один популярный плагин, на этот раз для реализации поиска по всему блогу, а не только постам. Русская версия у Кактуса.
    Взлом зарегистрирован во всех версиях до 2.11, причём забавно то, что на сайте плагина скачать можно только 2.10, зато в других местахрусский вариант) уже предлагают безопасные версии.

  9. Sniplets
  10. Это вообще какая-то мега тулза по замене текста в посте в зависимости от условий, добавление подсветки и т.д. БлогСекьюрити сообщают, что уязвимы версии до 1.1.2, но судя по Version History с сайта — багфикса нет и в текущей (1.2.2) версии, на это же указывает и, например, вот этот взлом.
    Так что, если вы его применяли, то отключаем и/или ищем замену.


Йех, наконец-то удалось что-то написать, а то почти неделю без интернета дома — это какой-то кошмар.
Успел за это время досмотреть аниме Death Note, одноименный фильм и Зеленую милю. Последнее настоятельно советую, если вдруг кто ещё не видел.

[Безопасность] Список дырявых плагинов

Все уже знают, что очередной релиз WordPress 2.3.3 в основном призван исправить бреши в безопасности (как обычно русскую версию можно скачать у Кактуса), но гарантирует ли это, что на ваш блог не смогут посягнуть?

Можно ответить «Нет», если вы не уверены в тех плагинах, которые у вас установлены.
Например, сами разработчики WordPress настоятельно рекомендуют не использовать плагин WP-Forum, а я несколько расширю этот список за счёт информации с сайта БлогСекьюрити.

  1. WP TextLinkAds
  2. Плагин для размещения ссылок от известной конторы TLA версии ниже 1.1.3 подвержен уязвимости, благодаря которой злоумышленник может получить доступ к БД и компрометировать весь блог.
    Для исправления советуют либо скачать новую версию, либо найти строку 512 ($postId = $postId;) и заменить её на $postId = (int) $postId;.

  3. dmsguestbook
  4. Гостевая книга dmsguestbook вообще одна сплошная дыра. Тут вам и возможность дефейса, получение доступа к данным из wp-config.php, управление файлами и папками на сервере, и даже множественные XSS-уязвимости в купе с различными SQL-инъекциями.
    БлогСекюрити советуют вообще нафиг отключить этот плагин, т.к. даже в последней (1.8) версии много багов и уязвимостей.

  5. st_newsletter 2.x
  6. Плагин рассылки st_newsletter позволяет, применив специальный запрос, содержащий SQL-инъекцию, получить список всех пользователей и хэши их паролей.
    Заплаток пока что нет, так что отключаем плагин от греха подальше.

  7. Wordspew
  8. Относительно известный Live-чат Wordspew тоже подвержен злостным инъекциям, и тоже пока что нет официальных (и не официальных) багфиксов. Отключаем.

  9. wp-footnotes 2.2
  10. Известная добавлялка подписей к постам wp-footnotes тоже обросла уязвимостью, из-за которой «злодей» получает доступ к админ.панели плагина, просто обратившись по определенному УРЛ к сайту. И, следовательно, может «добавить» свой текст к вашим постам.
    И этот плагин без фикса, так что используйте на свой страх и риск.

На этом всё. Надеюсь теперь вы чувствуете себя ещё более защищенными.

Новогодний подарок блоггерам — WordPress 2.3.2

Как всегда я плетусь в самом конце WP-движения, это я о скорости реакции на анонсы релизов)
Уже успели выложить и две разные версии русского вордпресса 2.3.2, который только-только сошёл с конвейера (от Максима и от mywordpress.ru), но, тем не менее, я всё же рискну быть не оригинальным и отписать ещё раз изменения со своими комментариями.
И так, данные взяты из официального анонса.

Улучшена производительность, при обработке постов, перед выводом пользователю.
Надеюсь, я правильно понял, то, что написано в этом тикете.
При выводе поста, да и любой другой страницы, производится множественный вызов функции get_post, через которую работают такие функции как the_title, get_permalink и т.д. Причём, хоть данные полученные от get_posts и кэшируются, но фильтрация/отбор данных происходит после получения уже ВСЕХ данных, а не ДО, что естественно сказывается на производительности. В 2.3.2 это пофиксили.

Улучшена работа функции is_admin(). Теперь нет возможности получить доступ к «Черновикам» администраторов обычному пользователю.
О «дыре» с доступом к черновикам я уже писал, вот теперь это уже и не дыра вовсе.

Ошибки базы данных теперь показываются только при включенном WP_DEBUG.
Ещё одна перестраховка от «шибко-хитрых-хацкеров», чтобы те не могли узнать названия таблиц вашей установки WordPress, при попытках sql-инъекций.

Во время установки WordPress, при нехватке прав у пользователя БД, будет выдаваться ошибка.
А, следовательно, и не будет создан «кривой» config.

Появился шаблон для отображения ошибок при подключении к БД.
Теперь любой пользователь может внести изменения в файл wp-content/db-error.php, который будет показан при невозможности подключиться к БД (например, если превышено количество одновременных подключений).

Добавлена дополнительная проверка при обработке текста, который конвертируется в ссылку.
Тут имеет место быть событие, когда вы вставляете текст с http://, а он автоматически конвертируется в аналогичную ссылку. Повышена производительность за счёт того, что теперь функция преобразования различает обычные ссылки, фтп и почтовые ящики. Стоит отметить, что, судя по всему подобные ссылки (за исключением ящиков) автоматически будут отображаться с rel=»nofollow», во всяком случае, тут всё указывает на это.

Внесены изменения в работу рассылки почты по POP3, чтобы избежать возможных XSS-атак.
Ещё один баг закрыт.

Запрос пароля к записи будет выдаваться только тем пользователям, у кого есть права на изменение этой конкретной записи. Всё это относится только к сторонним-клиентским программам, работающим через XML-RPC.

Ещё одно изменение в XML-RPC, которое связано с отображением данных о пользователе, при вызове wp.getAuthors.
Данные теперь выводятся в более ограниченном формате, а так же добавлена проверка, что пользователь имеет минимальные права (редактирование постов), чтобы ограничить распространение информации, такой как имя пользователя, его логин и прочее.

И ещё целый ворох проверок в методах XML-RPC и App, для улучшения безопасности.

И совсем маленькое добавления при проверке путей файлов, на win-серверах.


Вот и всё. Вроде бы и не много, но и не мало. Ставить, я думаю, стоит, но… только после того, как голова и руки будут действовать активно и правильно, апосля празднования НГ, а то можно дел наворотить)

И ещё, если тов. Лекактус не против, то я бы попросил его немного подправить текст на mywordpress.ru, а то что-то слишком много орфографических ошибок и местами не понятный текст. Если нужна помощь, то могу предложить свои услуги, но опять-таки — после праздничков.

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

А мужики то не знают: защита в WordPress 2.4, дыры и апдейт в 2.3 и подсветка синтаксиса

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

Улучшенная система безопасности в WordPress 2.4

Хоть сам движок ещё готов процентов на 30, но уже заявлены приятные нововведения, такие как использование безопасных куки и новый алгоритм шифрования хранимых паролей.
Про протокол безопасных куки (secure cookie protocol) можно прочитать в этом .pdf (116Kb на англ.), если кратко, то новые куки выглядят так:
имя пользователя|время действия|HMAC(имя пользователя|время действия|ключ)
Причём ключ = HMAC(имя пользователя|время действия|секретный ключ), во как!

В новом протоколе реализованы такие фичи, как управление истечением времени на стороне сервера, массовая перепроверка всех кукисов, а так же предложена повышенная конфиденциальность.

Пароли же теперь буду хэшироваться при помощи phpass, который к обычному md5-хэшированию добавляет ещё возможность подсолить («salt» — представляет собой некий набор символов; обычно это символы обоих регистров, цифры и спецсимволы, которые накладываются или склеиваются с самим паролем или с хэш-суммой пароля) и даже растянуть короткий пароль. Всё вместе это значительно увеличивает сложность взлома путём перебора хэшей.

Так же не стоит забывать, что phpass так же будет применяться в Drupal и phpBB, а значит, существует вероятность, что можно будет использовать одни и те же регистрационные данные в пределах сайта для каждого пользователя, причём без дополнительных извращений.

В принципе, код, отвечающий за кукисы и шифрование phpass’ом, уже можно скачать и опробовать, вот только не делайте этого на активном блоге, т.к. таблица пользователей будет безнадёжно испорчена, а уж если вы ещё и бэкап не сделали…


Некоторые активные дыры в WordPress 2.3.x

1. Существует возможности при выполнении определенных действий, получить доступ к Черновикам (Drafts), созданным другими пользователями, в том числе и администратором. Поэтому старайтесь не хранить в черновиках конфиденциальную информацию. Пока что дыра есть в 2.3.1 и скорее всего во всех предыдущих версиях. Ждём-с багфикса с апдейтом.

2. Дыра в плагине Wp-ContactForm, при помощи которой злоумышленник может выполнить инъекцию HTML кода и получить пересылаемые данные. Баг фикса нет, но сам плагин старенький, поэтому советую вам просто поменять его на Cforms II, тем более вы можете скачать русскую версию у Соники.

3. Уязвимость обнаружили ребята из Seo Egghead. Заключается она в возможности внедрять ссылки в старые посты, причём, обычно выглядит это так, как будто и должно быть, только вот PR естественно снизится. Подвержены такому «хаку» все версии с 2.1 по 2.3.1 включительно.
Яйцеголовые ребята советуют произвести поиск по блогу по таким словам, как: mp3, download, adshelper, softicana, casino, viagra и тому подобному (не мне вам рассказывать, чем обычно спамят)))


Обнови пермалинки правильно

У некоторых пользователей после перехода на 2.3.1 появился скверный глюк, а точнее ошибка:
«Warning: Invalid argument supplied for foreach() in /home/wallis3/public_html/wordpress/wp-includes/classes.php on line 92»
Лечится это довольно просто, но и не очевидно одновременно: нужно сперва сбросить пермалинки на те, что установлены по умолчанию (Настройки > Постоянные ссылки > По умолчанию > «Обновить шаблоны ссылок»), после чего можно вернуть свои старые шаблоны и обновить повторно — глюк должен исчезнуть.


Разметка кода на блогхостинге WordPress.com

Возможно, полезность данной заметки сомнительна, потому как у нас большой популярностью WordPress.com (не путать с бесплатной блог-платформой WordPress) не пользуется, куда чаще используют BlogSpot/Blogger или ЖЖшку, но была — не была.
Если вы ведете блог на WordPress.com, то для красивой разметки исходных кодов, у вас есть строенная реализация. Работает это так
[sourcecode language='язык']
строчка код 1
...
строчка код n
[/sourcecode]

, где язык — это на выбор: cpp, csharp, css, delphi, java, jscript, php, python, ruby, sql, vb, xml.
За основу взят SyntaxHighlighter, нашего соотечественника (как я понял) Алекса Горбачева.


Помоги найти трэкбэк

Оказывается, среди тэгов разметки WordPress есть такое чудо, как trackback_rdf, который внедряет на страницу не видимый для пользователя код, применяемый некоторыми программами и поисковыми ботами, для определения адреса трэкбэка. Сам тэг должен размещаться внутри Loop’а и быть скрыт в html-комментарий, чтобы не попадаться на глаза читателю. Выглядит это примерно вот таким образом:


Ну вот на сегодня и всё. До скорого. И берегите себя и свой блог.