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


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

Adsence тестирует управление рекламой из аккаунта

Не заметил особого ажиотажа, да и вообще новостей на эту тему, но как писали на Проблоггере со ссылкой на официальный блог адсенса: «AdSense Introduce ServerSide Ad Management», что на русский можно перевести как «Adsence представляет управление рекламой на стороне сервера».

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

adsence ad managment tool

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

adsence ad managment tool

К сожалению, чтобы воспользоваться этой фичей придётся подождать какое-то время, пока не закончится период активного тестирования, а потом, как это не прискорбно, необходим будет менять код на всех своих сайтах на новый, но этот раз должен стать последним, как обещает гугл.

Подождём увидим, а ждать, по-моему, стоит.

Что же хорошего будет в 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 как средство для быстрой разработки сайтов-визиток, а так же как основы вообще для любых сайтов.
Возник вопрос — как обучить человека далёкого от компьютеров вносить изменения и создавать посты? Может кто-то знает хорошие (или не очень) видео-уроки?