+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Администратор «Битрикс», не делай так никогда!

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

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

Дорогой администратор «Битрикс»! Ты, конечно, не станешь переименовывать файлы ядра CMS или раздавать пароли направо и налево. Но есть подводные камни, которые могут поломать сайт надолго. Знай и избегай их!

1. Загрузка в инфоблок файла с длинным именем

Если кто-то загрузит в инфоблок файл с длинным (более 255 символов) именем, содержащим кириллические символы, то сначала ничего не случится. И при резервном копировании ничего не случится. При ручном или автоматическом режиме «Битрикс» без возражений будет создавать архивы.

А вот когда случится авария или миграция, придет беда. «Битрикс» не сможе распаковать резервную копию, диагностировав ошибку "слишком длинное имя файла". И это неисправимо. Вам придется перебирать архивы в поисках целого. Все изменения сайта, выполненные после этого архива, будут потеряны.

2. Опасные скрипты в корне сайта

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

Чеммпион среди них restore.php, служащий для восстановления сайтов из резервных копий.

Нередко также в корне сайтов забывают установочные файлы bitrix7setup.php и bitrix8setup.php, скрипт импорта bx_1c_import.php. Все эти программы легко обнаруживаются поисковыми системами и оставляют сайт беззащитным перед взломщиками.

3. Автоматическая проверка на забытые файлы

Избежать неприятностей с забытыми скриптами поможет автоматический чек-лист. Вот его код:

AddEventHandler('main', 'OnCheckListGet', array('CItcCheckListTests', 'onCheckListGet'));

class CItcCheckListTests
{
    static public function onCheckListGet($arCheckList)
    {
        $checkList = array('CATEGORIES' => array(), 'POINTS' => array());

        $checkList['CATEGORIES']['ITC_QC'] = array(
            'NAME' => 'Корпоративный тест качества ITConstruct',
            'LINKS' => ''
        );

        $checkList['POINTS']['ITC_QC_FAVICON'] = array(
            'PARENT' => 'ITC_QC',
            'REQUIRE' => 'Y',
            'AUTO' => 'Y',
            'CLASS_NAME' => __CLASS__,
            'METHOD_NAME' => 'checkFavicon',
            'NAME' => 'Наличие favicon',
            'DESC' => 'Проверка наличия favicon - иконки сайта, отображаемой в заголовке вкладки и поисковых системах',
            'HOWTO' => 'Производится проверка главной страницы сайта на наличие соответствующего мета-тэга. Если тэг объявлен - проверяется наличие иконки по указанному урлу. Если не указан - наличие favicon.ico в корне сайта',
            'LINKS' => 'links'
        );

        $checkList['POINTS']['ITC_QC_DENY_DEV'] = array(
            'PARENT' => 'ITC_QC',
            'REQUIRE' => 'N',
            'AUTO' => 'N',
            'NAME' => 'Закрытие доступа извне к dev-серверу',
            'DESC' => 'Согласовать с менеджером закрытие доступа ко внутреннему серверу разработок из внешнего мира',
            'HOWTO' => 'Попинговать с телефона после апдейта днса',
        );

        return $checkList;
    }

    static public function checkFavicon($arParams)
    {
        $arResult = array('STATUS' => 'F');
        $check = file_exists($_SERVER['DOCUMENT_ROOT'] . '/favicon.ico');

        if ($check === true) {
            $arResult = array(
                'STATUS' => true,
                'MESSAGE' => array(
                    'PREVIEW' => 'Favicon найдена - ' . '/favicon.ico',
                ),
            );
        } else {
            $arResult = array(
                'STATUS' => false,
                'MESSAGE' => array(
                    'PREVIEW' => 'Favicon не найдена',
                    'DETAIL' => 'Тест очень старался, но так и не смог найти фавыконку. Ну и чёрт с ней',
                ),
            );
        }

        return $arResult;
    }
}


Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...