VladSavitsky: Блог

Главные вкладки

Обновляемся до 5.10 и 6.4

14 августа 2008 в 10:49

Собираемся с духом и обновляемся до 5.10 и 6.4!

  • Номер сообщения об уязвимости: DRUPAL-SA-2008-047
  • Проект: ядро Друпал
  • Версии: 5.x, 6.x
  • Дата: 13 июля 2008
  • Риск безопасности: Очень опасно
  • Тип уязвимости: удалённая
  • Уязвимости: множественные уязвимости

Описание

Множественные уязвимости обнаружены в Друпал.

CROSS SITE SCRIPTING

A bug in the output filter employed by Drupal makes it possible for malicious
users to insert script code into pages (cross site scripting [
http://en.wikipedia.org/wiki/Cross-site_scripting ] or XSS).

A bug in the private filesystem trusts the MIME type sent by the browser,
enabling malicious users with the ability to upload files to execute cross site
scripting attacks.

These bugs affects both Drupal 5.x and 6.x.

ARBITRARY FILE UPLOADS VIA BLOGAPI

The BlogAPI module does not validate the extension of uploaded files, enabling
users with the "administer content with blog api" permission to upload harmful
files.

This bug affects both Drupal 5.x and 6.x.

CROSS SITE REQUEST FORGERIES

Drupal forms contain a token to protect against cross site request forgeries [
http://en.wikipedia.org/wiki/Cross-site_request_forgery ] (CSRF). The token may
not be validated properly for cached forms and forms containing AHAH elements.

This bug affects Drupal 6.x.

User access rules can be added or deleted upon accessing a properly formatted

Вычисляем соседей по shared-хостингу

1 июля 2008 в 18:23

Задача

Нужно вычислить какие ещё сайты находятся на сервере с определённым IP.
Это может быть полезно для:

  • оценки загруженности shared-сервера
  • оценки хостера

Решение

Варианты

  • Сервис MyIPNeighbors
  • Сервис DomainTools
  • Microsoft Live! Search
  • SSH-доступ

Сервис MyIPNeighbors

Бесплатный сервис MyIPNeighbors позволяет не только получить список всех доменов, но и просмотреть эти сайты на одной странице. Рекомендую.

Сервис DomainTools

Чиним пути в Google sitemap

30 июня 2008 в 9:13

Задача

Настроить модуль XML sitemap (версия 6.x-0.x-dev) для корректной работы с синонимами путей, которые создаёт модуль Pathauto, вместо системных путей. То есть в файле http://example.com/sitemap.xml вместо "node/234" должно быть "page/statia-pro-hleb".

Решение

Оригинал решения: Использование синонимов вместо системных путей в sitemap.xml.
Нужно внести изменения в код модуля.

Анализ поисковых запросов на сайте

21 июня 2008 в 16:39

Задача

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

Решение

На сайте могут использоваться разные системы поиска.

Варианты

  • Стандартный модуль Search
  • Модуль Google Custom Search Engine

Стандартный модуль Search

Диаграмма выполнения функции theme

21 июня 2008 в 0:16

Задача

Понять, что изменилось в работе функции theme() Друпал 6.

Решение

Обратите внимание, что большая часть движка PHPTemplate перемещена глубже в фукцию ядра theme(). Это позволяет модулям и .inc-файлам ядра стандартизировать их вывод в .tpl-файлах. Это значит, что создатилям тем не нужно устанавливать вручную callback-функцию.

Приличное количество функций в ядре уже были конвертированы. Это означает меньше работы для создателей тем. Дублирование файлов в теме позволит создателям тем переопределить вывод - это просто!

Выполнить PHP-код на сайте

18 июня 2008 в 1:24

Задача

Выполнить PHP-код в среде Друпала.

Решение

Внимание:
Неиспользуемый код нужно сразу удалить, потому что это может быть опасно!
Не оставляйте лазейку для пытливого ума хакера!

Варианты

Выполнить код (сниппет) можно:

  • В блоке
  • В блоке Execute PHP модуля Devel
  • На странице
  • Отдельном файле

В блоке

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

Скринкаст: Новые возможности Views 2

16 июня 2008 в 8:15

Greg Knaddison записал скринкаст, который показывает новые возможности мощного модуля Views 2 для Друпал 6.
Views 2 на данный момент находится в состоянии тестирования (beta), но следующая версия будет выпущенка как candidate 1.

Этот скринкаст длится 34 минуты и предлагает обзор возможностей Views 2.
Видео показывает не все возможности, но это хорошая отправная точка для изучения и использования Views 2.

Оригинал статьи и видео: New features in Views 2

Проверить отображение сайта в разных браузерах

11 июня 2008 в 0:43

Задача

Просмотреть сайт в разных браузерах.

Решение

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

Варианты

  • Онлайн-сервисы, которые сделают снимок экрана в нужном браузере
  • Локальная установка разных браузеров
  • Настройка конфигураций под виртуальными машинами

Онлайн-сервисы, которые сделают снимок экрана в нужном браузере

browsershots.org

Чиним ссылку OpenID на форме входа

5 июня 2008 в 13:57

В друпал6 модуль openid входит в ядро.
На форме входа появляется доп. ссылка - вы щёлкаете и, вместо логина/пароля, видите поле для ввода OpenID.
Всё это делается без перезагрузки страницы - AJAX.

Но ссылка, которая используется (перехода по ней нет) имеет кривой вид типа: drupalcookbook.ru/%23
Поисковики как-то её нашли (в блоке нашли - страница user/login запрещена в robots.txt) и ругаются, что она не работает.

Чинится это так:
Открыть файл /modules/openid/openid.module
Найти функцию function openid_form_alter(&$form, $form_state, $form_id)
В ней изменить код:
<?php
// 'data' => l(t('Log in using OpenID'), '#'),
//Start

Анализ производительности базы данных MySQL

30 мая 2008 в 2:41

Задача

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

Решение

Начнём с простых методов анализа.

Варианты

  • Стандартные возможности Друпал
  • Скрипт "tuning primer" (Matt Mongomery)
  • Включение полного лога запросов

Включение полного лога запросов

Включение полного лога в my.cnf:

Интеграция модулей nodeteaser и meta tags (nodewords)

29 мая 2008 в 20:14

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

В /sites/all/modules/nodewords/metatags/description.inc код функции нужно изменить:
<?php
function nodewords_description_prepare($type, $ids, $value, $settings) {
if ((!isset($value) || empty($value)) && $settings['use_teaser'] && count($ids) == 1) {
switch ($type) {
case 'node':
$node = node_load($ids[0]);
if ($node && node_access('view', $node)) {

Удалить содержание из документа типа book

21 мая 2008 в 0:46

Задача

При просмотре документа типа book снизу выводится навигация по книге - дочерние документы, а также предыдущий, следующий документы и "вверх" на один уровень.
Нужно удалить эту навигацию.

Решение

Друпал 6

Варианты:

  • Исправление шаблона навигации модуля book
  • Вариант, который будет работать после обновления версии Друпал.

Исправление шаблона навигации модуля book

Вывести развернутое содержание книг в модуле Book в Друпал 6

20 мая 2008 в 21:55

После изучения API Drupal 6 написал такое:

<?php
//http://api.drupal.org/api/function/book_block/6
function book_toc_recursive() {
  $book_menus = array();
  $pseudo_tree = array(0 => array('below' => FALSE));
  foreach (book_get_books() as $book_id => $book) {
    $menu_item=menu_tree_all_data($book['menu_name'], $book);
    $book_menus[$book_id] = menu_tree_output($menu_item);
  }
  return theme('book_all_books_block', $book_menus);
}
echo book_toc_recursive();
?>

Код выводит таки оглавление, но до 2го уровня вложенности.
А мне нужно все уровни. Чтобы было как настоящее содержание в книге.
Подскажите как это сделать.

Вот фото того, что есть на данный момент:

Изменения в модуле Book в Друпал 6

20 мая 2008 в 0:51

Задача

Найти и понять изменения в модуле Book, чтобы можно было адаптировать сниппеты и модули, которые взаимодействуют с модулем Book, для работы в Друпал 6.

Анализ модуля Book прошёл успешно!

Странные пути в Друпал 6

26 апреля 2008 в 0:50

Просматирвал статистику обращений к серверу и обнаружил вызов такого пути:
http://example.com/book/js/form
Ответ сервера:
{ "status": false, "data": "" }

Поискав я нашёл информацию, что это ответ вызова AJAX-функции модуля book.
В 5й версии Друпала этого нет - такой путь просто выдаёт список книг на сайте.
Вопрос такой:
Нормально ли это? Не вызовет ли это каких-то проблем (XSS или с поисковиками)?...

Работает ли поиск в Друпал для комментариев?

23 апреля 2008 в 22:21

Такое подозрение, что стандартный модуль Search не ищет в комментариях.
Это правда?
Может быть поиск в комментариях нужно как-то настроить?

Если не работает поиск, то нужно ставить модуль, который переводит комментарии в ноды, чтобы по ним поиск заработал...

Друпал - победитель Webware 100

23 апреля 2008 в 10:18

Друпал - победитель Webware 100Второй раз подряд Друпал получает награду Webware 100

Награды Webware даются лучшим сайтам, сервисам и приложениям Сети сегодня.

Учитывая, что более чем 5000 продуктов были номинированы на эту награду и около 2х миллионов пользователей голосовали, чтобы определить 100 лучших продуктов - эта награда является огромным доказательством могущества сообщества Друпал.

Сообщество Друпал стремительно растет!

Переадресация при переносе сайта из поддомена в корень сервера

18 апреля 2008 в 16:24

Задача

Сайт был доступен в поддомене и нужно переместить его в корень сервера.
Или нужно сделать канонизацию доменного имени (сайт с "www" должен указывать на сайт без "www")

Решение

В файле .htaccess (файл находится в корне сайта) после:

<IfModule mod_rewrite.c>
  RewriteEngine on

добавляем:

  RewriteCond %{HTTP_HOST} ^www\.example\.com
  RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Как работает такая переадресация:

Преимущества:

Переезд сайта из подпапки в корень сервера с точки зрения поисковиков.

8 апреля 2008 в 17:11

Озадачился я вот каким вопросом.
Сайт долгое время был в подпапке и поисковики успели его проиндексировать.
Затем он переехал в корень сервера, а все прежние (проиндексированные) ссылки стали нерабочими.
Это не хорошо. Кроме того, кто-то уже мог и ссылку на них поставить....

Вот какое я нашёл решение:
В файле .htaccess (что в корне сайта) пишем до всех правил:

  #From subfolder to root. Start
  RewriteCond %{REQUEST_URI} ^/subfolder
  RewriteRule ^subfolder/(.*)$ http://site.ru/$1 [R=301,L]
  #From subfolder to root. End

Преимущества:

Гуру Друпала :-)

28 марта 2008 в 16:16

Вопрос гуру

Я сделал только перевод. Оригинал картинки: http://www.robcottingham.ca/20070606/doodle-drupal-guru/
Что самое интересное - "в каждой шутке есть доля шутки" ... а остальное - правда!
Гуру всех стран - объединяйтесь!

Делаем резервную копию базы данных

25 марта 2008 в 17:33

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

  • автоматизированные инструменты, которые предоставляет ваш хостер,
  • бесплатный скрипт phpMyAdmin, который позволяет управлять базой данных, а также создать дамп базы данных и скачать его
  • бесплатный скрипт Sypex Dumper Lite, который позволит вам создавать резервные копии любых размеров и восстанавливать их.