Новогодний подарок блоггерам — 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-комментарий, чтобы не попадаться на глаза читателю. Выглядит это примерно вот таким образом:


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

Anti Spam Image 0.7 — Обновление с обновлением

Давненько я не радовал вас, да и себя, новыми плагинами в собственной модификации. И хотя курсовую мне завернули и я всё ещё не могу вернуться к полноценному блогингу, но маленькой «приятностью» хочу с вами поделиться.

Встречайте Anti Spam Image 0.7. Это всё тот же, народно любимый (судя по тому, как часто встречаю его в различных блогах) капча плагин, в редакции Максима. Однажды я уже менял его, чтобы обеспечить совместимость с Ajax Comment, теперь пришло время ещё одной востребованной особенности — обновления капчи без перезагрузки всей страницы.

Где только не упоминали/проклинали эту капчу, потому что код, генерируемый на картинке, завязан на php-сессии и, если слишком долго вводить комментарий, капча уже не срабатывала, приходилось перезагружать страницу, перенося сам текст комментария. В общем сплошной геморой для читателей, который отбивает желание, что-либо вообще комментировать.

Теперь всё намного проще — кликаем по капче и она обновляется. Всё гениальное — просто.

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

P.S.: Все последнии версии файлов можно найти на странице»Список файлов для скачки«, ссылка всегда в сайдбаре висит.
P.P.S: Приятного и продуктивного использования.
Проверить «обновляемость» можно и у меня в блоге. Кликайте себе на здоровье.

10 вещей, которые стоит сделать при смене темы в WordPress

В последнее время приходится периодически править чужие темы, что натолкнуло на мысль — составить список тех вещей, которые необходимо выполнить, чтобы новая тема работала так же как и старая — на все 100%. К тому же, надеюсь (в который уже раз даю себе обещание) сменить тему в своём блоге на нечто более живописное.

Так же этот список может пригодиться тем из пользователей WordPress, которые любят менять тему в соответствии с сезоном или праздниками (а ведь Новый Год на носу), сам я этим не страдаю, но знаю, что существуют и такие индивиды.

1. Удостоверьтесь, что весь перевод (если вы его делали) сохранен в кодировке блога, а то печально наблюдать крякозябры в перемешку с нормальным текстом.

2. Перенесите свои спец. виджеты из старой темы (код из файла function.php) в новую, проверив чтобы названия виджетов не дублировались.

3. Заново разместить все свои виджеты в сайдбаре(-ах), указав необходимые настройки.
3 и 4 пункты — если вы используете тему с динамическим сайдбаром, если же нет, то правим прямо sidebar.php

4. Переносим функции, которые размещали для правильной работы плагинов. Например, тот же Wp-PageNavi, WP-RelatesPosts, ну и в том же духе.

5. Вставляем в хэдер или футер коды своих «счётчиков/анализаторов» (liveinternet/google-analystic), чтобы потом не удивляться резкому падению посещаемости до 0.
Для пользователей аналистика советую плагин Google Analyticator, который кроме автоматического внедрения нужного кода в хэдер, ещё и позволяет исключать определенных пользователей. Ведь вам же не нужно считать свои собственные клики?

6. Проверяем правильно ли прописан фид, если вы перешли на FeedBurner, т.к. ссылка по умолчанию будет на www.сайт.ру/feed.
Мой вам совет, чтобы не морочить себя пунктом 6, воспользуйтесь плагином Feedburner Feed Replacement, который автоматически редиректит все обращения к вашему фиду на фидбёрнер.

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

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

9. Проверьте как ваш сайт отображается в разных браузерах. И если у вас на компьютере стоит, например, только IE (вздрогнул при мысли об этом), то воспользуйтесь сервисом http://www.browsershots.org/.

10. Оповестите читателей об этом знаменательном событии. Ведь многие читают вас исключительно по rss и не смогут оценить изменений. Так же попросите посетителей оставлять свои замечания и сообщать вам о найденных ошибках в комментариях к новости или в письмах. Обратная связь — полезная возможность, которой не стоит пренебрегать.


Ну вот и всё. Надеюсь, что следуя данному списку вы сэкономите себе и время, и нервы, а ваши посетители будут обрадованы красотой и функциональностью блога.

Что же хорошего будет в WordPress 2.3.1

На офф.сайте WordPress выложили публичную бету последней ветки — WordPress 2.3.1 beta.
Нововведений мало, обновление больше связано с багфиксами, поэтому быстро перечислю что добавили/исправили.

Нововведения:
1. Добавлена поддержка тэгов (меток) для Windows Live Writer (WLW). (интересно есть кто-то, кто через него пишет?)
2. Убрали кнопку «Преобразовать все категории», потому что кто-то (а таких видимо не мало) накололся, импортировав всё в тэги.
3. Заменили часть запросов с LEFT JOIN на INNER JOIN, что должно увеличить скорость и уменьшить нагрузку на сервер.
4. Оптимизировали запросы, работающие с термами в таксономии, что так же должно положительно сказаться на скорости работы.

Теперь список багфиксов:
Перечислю сами проблемы, так что если найдёте свою, то можете смело обновляться (предварительно сохранив копию старых файлов)
1. Prototype загружался раньше jQuery, что вызывало какую-то noConflict system проблему.
2. wp_safe_redirect() чувствителен к регистру передаваемого URL.
3. clean_url() заменял амперсанд (&) на &, что вызывало ошибку при передачи строки в качестве запроса к БД.
4. Фильтр get_pages применялся дважды при включенном кэше, что вызывало дублирование контента.
5. Оповещение по email не работало на хостингах, проверяющих адрес отправителя письма (должен принадлежать текущему домену).
(кстати, чтобы это пофиксить нужно добавить в файле pluggable.php строку

перед

)
6. Проблемы с входом в WP после отключения «тестовых cookie».
7. Проблема с закладкой «Все» в панели «Загрузка» (Browse all и Upload соответственно в англ.версии), при апгрейде с более старых версий.
8. У виджета «Рубрика» был не верно указан class (widget_catgories) из-за чего стили применялись неверно.
9. При отправке файла в редактор (из списка загруженых на сервер) при пустом заголовке файла, выдавалась ошибка.
10. Ошибка в MT-импортере.
11. Не верное преобразование скобок (< >) в не-визуальном редакторе, в определенных ситуациях.
12. Проблема с UTW-импортом.
13. При импорте ссылок из Blogroll, категории ссылок импортировались не верно.
14. Проверка обновлений плагинов в определенные моменты работала не верно.
15. Некоторые плагины статистики (WP-stats/slimstats) работали не правильно, обрабатывая клики только по одной странице.
16. Иногда предпросмотр поста вызывал бесконечный редирект.
17. Появлялась ошибка «WordPress database error: [Duplicate entry ‘106-14’ for key 1]» после обновления до 2.3.


Вчера ездил на семинар «Тематические блоги: от идеи до реализации», честно говоря, ничего нового для себя не почерпнул. Почти что «перевод времени на дерьмо», хотя оба докладчика были интересны сами по себе, а вот тема чересчур изъезжена.
За то пообщался с Олесей Бреус на разные темы, в том числе и о возможности использовать WordPress как средство для быстрой разработки сайтов-визиток, а так же как основы вообще для любых сайтов.
Возник вопрос — как обучить человека далёкого от компьютеров вносить изменения и создавать посты? Может кто-то знает хорошие (или не очень) видео-уроки?