Нет повести печальнее на свете. Как лечить взлом сайта — продолжение.

История. Звонит клиент, при заходе на часть страниц сайта, Аваст ругается на малваре. При этом остальные антивирусы молчат.

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

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

Лечение свелось как обычно к обновлению системы, смене логинов-паролей ко всему и чисткой дампа базы от зловредных кодов и ссылок на порнуху.

Кстати, мегаполезный инструмент: http://antivirus-alarm.ru Сканирует страницы по разным вирусным базам (и Авастовской тоже).

Рекомендую.


Почему не стоить экономить на регистрации домена.

Зачем платить регистратору деньги за домен, когда можно получить его бесплатно у хостера по акции? Ответ простой: Экономя пару сотен на домене, получаешь бомбу замедленного действия. Когда бизнес маленький, приносит не много и не стабильно, простой в час или день не смертелен. Но когда весь бизнес завязан на сайте и через сайт проходят крупные транзакции, активно продается сервис и т.д., даже часовой простой грозит финансовыми и репутационными потерями.


http://habrahabr.ru/post/265711/

Сегодня утром ряд клиентов, поддержку веб-серверов которых я осуществляю, получили письма счастья о смене ДНС серверов:

Домен:

domain: *******.RU
admin-o: *******-GPT
nserver: ns-*******.awsdns-34.org
nserver: ns-*******.awsdns-58.com
nserver: ns-*******.awsdns-12.net
nserver: ns-*******.awsdns-30.co.uk
state: REGISTERED, DELEGATED
created: 29-11-2011
changed: 30-08-2015
paid-till: 29-11-2015
mnt: TIMEWEB-MNT-GPT
source: R01

заменен на:

domain: *******.RU
admin-o: *******-GPT
nserver: ns1.hostingnewfree.ru
nserver: ns2.hostingnewfree.ru
state: REGISTERED, DELEGATED
created: 29-11-2011
changed: 30-08-2015
paid-till: 29-11-2015
mnt: TIMEWEB-MNT-GPT
source: R01



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

Итак, первое письмо пришло около 6 утра по московскому времени, 30 августа.

1) Пробуем на сайте r01.ru зайти в раздел «Вход для клиентов», переход по ссылке радует циклической переадресацией и ошибкой браузера.

2) Звоним в r01.ru, грустный молодой человек сообщает, что о проблеме с разделом они знают, нужно ждать 6-8 часов.

3) Тот-же самый грустный молодой человек сообщает, что о проблеме с доменами зарегистрированными партнером TIMEWEB они также знают, и нужно ждать те-же 6-8 часов, после которых днс вернутся в прежнее состояние.

4) Пишем в чат поддержки тайвеба, получаем не очень ободряющий ответ:


5) Сайты начинают резолвится на левые ip адреса и выпадать из поиска яндекса.

6) На 12:00 по мск панель r01.ru заработала, однако попытка изменить днсы выдает сообщение:
Задание для этого домена уже имеется в очереди


7) Один из клиентов уже сообщает о потери 300 тысяч рублей (снижение продаж в одном из интернет-магазинов), а некоторые жалуются на появившиеся баннеры, предлагающие удлинить член на 10 см за 4 дня. Что дальше и кто будет компенсировать это?

Как и в посте habrahabr.ru/post/265699 все веб-кластеры, репликации и прочие вещи оказываются бесполезными, против «ждите 6-8 часов» от регистратора.

8-)

На 12:30 по мск, whois начинают возвращать правильные днс.

Саппорт таймвеба сообщает о:

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



9) На 13:00 по мск, partner.r01.ru работает в режиме панели Шрёдингера.


Экономия на доменах до добра не доводит.
Лично я, для своих проектов и проектов своих клиентов, с 2006 года регистрирую домена в РУ-центре.
9 лет, полет нормальный.

Как повесить на сайт виджет booking.com

Бился, бился, так и не нашел родного генератора виджетов booking.com без регистрации и смс.

В итоге пришлось руками лезть в код более удачливых коллег. Результат:

<script>
(function() {
var randomId = Math.floor(Math.random() * 100000);
var targetElemId = ‘bcom_rwidget_’ + randomId;
document.write(‘

‘);
var script = document.createElement(‘script’);
script.type = ‘text/javascript’;
script.async = true;
script.src = ‘http://www.booking.com/review_widget/ru/hostel-provans.ru.html?tmpl=review_widget/review_widget&wid=’ + targetElemId + ‘&wtype=box_big&hotel_id=505241&widget_language=ru’;
var node = document.getElementsByTagName(‘script’)[0];
node.parentNode.insertBefore(script, node);
}());
</script>


hostel-provans.ru — урл сайта отеля, он же есть в урл карточки отеля на букинге.
hotel_id=505241 — ID отеля, можно взять в коде страницы отеля. Так и ищется по hotel_id

С tripadvisor повезло больше:

http://www.tripadvisor.ru/Widgets-g298529-d4415667-c6-a_widgetKey.selfserveprop-Provence_Hostel-Novosibirsk_Novosibirsky_District_Novosibirsk_Oblast_S.html

Фавиконки. Favicon.ico, что может быть проще, что может быть сложнее.

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

Небольшое резюме статьи:

1. В тренде PNG, т.к. формат ICO если еще не умер, то уже скоро.
2. Размер 16х16 уже не в тренде. Вернее в тренде только для десктопных браузеров, но не для тв, смартфонов и прочего популярного зоопарка техники.

Добавлю от себя. Для экономии времени можно использовать генераторы фавиконок. Например http://realfavicongenerator.net На выходе получаем готовый код и набор фавиконок топовых размеров. Картинки лучше просмотреть руками. Если результат не очень, можно внести правки в исходник и перегенерировать заново или перерисовать руками.

Вспомнился мне чего-то цирк 5,6,7,… летней давности про геморрой с версткой под разные браузеры. Видимо и тут в итоге будет один формат. Хочется верить.

Респонсив помогает экономить на хостинге и зарабатывать больше денег.

За последние 3 месяца у клиентского интернет магазина, значительно вырос трафик с контекста и органической выдачи поисковиков. Выросло и потребление ресурсов хостинга. Мой любимый timeweb не долго это терпел, прислал предупреждение (за что их люблю — заботятся о клиентах).

После исследования проблемы и оптимизации ресурсов, сэкономил для клиента 6т.р. в год на переходе на новый тарифный план.
Оптимизировал скорость загрузки интернет магазина.

Тут, куда не посмотри, кругом одни плюсы:
+ Лишних денег за дорогой тариф платить не надо;
+ Сайт начал грузиться быстрее — хорошо для посетителей — комфортнее пользоваться сайтом — удобнее покупать;
+ Быстрее грузится — лучше поведенческие факторы — seo работает эффективней — больше посетителей.

Оптимизируем скорость загрузки Joomla

Основной принцип оптимизации — убить то, что можно убить (JS, CSS, картинки, лишний код). То, что убить нельзя — подрезать по максимуму.

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

JS — минимизировать и оптимизировать способ подгрузки.

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

Грузим JS асинхронно. Есть готовый халявный плагин: смотреть-качать. В настройках прописываем относительные урлы js (можно скопировать из кода страницы), которые надо грузить асинхронно.

Если какие-то библиотеки вовсе не нужны для работы, их можно отрубить через шаблон:

перед:
<jdoc:include type=»head» />


вставляем:
<?php
unset($this->scripts[$this->baseurl.’ОТНОСИТЕЛЬНЫЙПУТЬ_ДО_JS’]);
?>

Например:
<?php
unset($this->_scripts[$this->baseurl.’/media/system/js/mootools-more.js’],
$this->_scripts[$this->baseurl.’/media/system/js/modal.js’]);
?>

Оптимизируем css http://habrahabr.ru/post/244815/

Как оптимизировать картинки — вагон мануалов, софта и онлайн-сервисов.

Для оценки проделанной работы, 2 основных инструмента:
webpagetest.org
developers.google.com/speed/pagespeed/insights

Очень рекомендую: Видео с доклада Виталия Фридмана «Responsive Web-дизайн: Трюки и уловки»

Лечение проблемы в таблице MySQL Joomla jos_session (jos session)

1. REPAIR TABLE jos_session обычно решает проблему.

2. Для профилактики можно сделать TRUNCATE TABLE jos_session;

+ рецепт из сети, сам не тестировал, надобности не было.

Если авторизация не используется, можно поставить тип для jos_session -> memory.
jos_session таблица хранится с использованием механизма хранения MyISAM — давайте хранить эту таблицу в памяти с помощью двигателя MEMORY хранения!
Для начала нам нужно изменить тип данных поля, так как двигатель MEMORY хранения не поддерживает BLOB / TEXT столбцы:
ALTER TABLE `jos_session` CHANGE `data` `data` VARCHAR( 5000 )
CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
5000 символов, как правило, достаточно для обработки данных сессии. Теперь давайте изменим двигателя:
ALTER TABLE `jos_session` TYPE = memory
MEMORY MySQL система хранения гораздо быстрее, чем MyISAM. Единственное, что сессии будут потеряны, если сервер не работает — но в 99,9999999999999999999% вам не нужно думать об этом, пользователи достаточно повторно Войти.

http://www.wilox.ru/joomla/oshibka-v-tablice-joomla-jos_session-jos-sessionustranenie-i-eyo-vosstanovlenie-v-mysql.html

Лечение IPhone 4 от ошибки «sim-карта не найдена»

Беда пришла, откуда не ждали. Без симки, телефон понятное дело — барахло. Даже такой гламурный, как айфон. По всем рецептам из сети пробежался, даже наиудобнейшую и мегашуструю иось 5, поменял на тормозную 7-ю версию, не помогло. Я уже грешным делом подумал менять шило на мыло телефон на версию посвежее. Но работа и тут помогла. Помогла не просто бюджетно решить проблему, но еще и денег заработать ))

Обратился ко мне клиент, попросил сайт сделать. Бизнес у него — как раз айфоны чинить (урл пока не дам, сайт в процессе, но как доделаю, поделюсь). В итоге пара минут консультаций, поездка в отделение мегафона, замена симки и проблема решена. За консультацию ребята денег не берут. Сидят на Красном, рядом с часовней, телефон +7 (383) 255-99-90 и +7 (909) 529-11-55

Рекомендую.

Меняем порядок сортировки товаров в категории Virtuemart 2

administrator/components/com_virtuemart/models/product.php
Исправить ASC НА DESC в строке 127
Код:
$filter_order_Dir = strtoupper(JRequest::getWord(‘order’, ‘ASC’));
на
Код:
$filter_order_Dir = strtoupper(JRequest::getWord(‘order’, ‘DESC’));

«500 — JHtmlContent: :prepare» при публикации модуля новостей

Причину не нашел, но лекарство есть:

modules/mod_articles_news/helpers.php

закомментировать строчку:

$item->introtext = JHtml::_(‘content.prepare’, $item->introtext, », ‘mod_articles_news.content’);