Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Bitrix WTF

Я сейчас в Ярославле слушаю доклад по клиентским сертификатам.

Рядом со мной сидит Коля Мациевский, он один из первых в России начал комплексно исследовать вопрос оптимизации загрузки сайтов и владеет сейчас первой в России компанией «WeBo», которая этим занимается. Коле скоро выступать, а пока он ковыряет исходники своего продукта, а точнее плагина, который встраивает упомянутый продукт в CMS «Bitrix».

Причина в том, что внутренний антивирус «Bitrix» почему-то вырезает JavaScript, который подключается плагином. Проблема оказалась в следующем коде:

$ll = strlen(bin2hex($this->body))/2;

if($ll > 500)
{
    $val = 9;
    $r += $val;
    $this->resultrules['rulescriptlenghts_sl'] = $val;
    return $r;//только одно правило из блока
}

Вот эта странная во всех отношениях (почему не просто strlen?) проверка считает вирусным любой JS-код, строка которого занимает больше, чем 500 байт.

4 комментария
Александр Фёдоров (spambaster.ya.ru) 2010

Я так понимаю глупый вопрос «почему именно 500байт»?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для spambaster.ya.ru:

Вопрос — почему вообще есть такое ограничение. Много людей используют компрессоры JS (например, jQuery), они делают очень длинную строку из вашего JS.

karudo (karudo.ya.ru) 2010

Ну может потому, что вирусы тоже любят в одну строчку выстаиваться?
А еще там есть вроде как исключения

Евгений Степанищев (bolknote.ru) 2010

Комментарий для karudo.ya.ru:

Нормальные сурипты так делают не менее часто — например сжатые.