Нас не забанят! Часть 2

Громкие заявления иногда (если не сказать - часто) оказываются пустышками. Не хотел об этом рассказывать во всеуслышание, да уж ладно. Мне сейчас все равно. Я хочу рассказать о громком заявлении от создателя чата chat.php.spb.ru. Заявлении, касающемся немного устаревшей версии чата 4.50 (в более ранние не заглядывал, в 4.60 - уже все в порядке). Итак, читаем файл help.php с админской помощью:

Что такое имя/код браузера

У каждого браузера есть имя, где включается имя/версия браузера, имя/версия/тип ОС, некоторые подробности о плагинах браузера. У каждого браузера, хоть маломальски отличающегося друг от друга, это имя разное. Следовательно, код браузера (строка из 6 байт типа "8708c9") и есть соответствие некого уникального имени уникальной короткой строке.

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

К примеру, к вам в чат зашел супер кул-хакер с сотней проксей в кармане. Вы его баните, а он меняет адрес прокси и входит опять. В этом случае забаньте его только по имени браузера. Да, при этом вы забаните тех, кто имеет точно такой же браузер, но это весьма маловероятно. На php.spb.ru есть статистика распределения браузеров и их названий. Примерно каждый 1-2% людей имеют абсолютно одинаковые браузеры. Поэтому, забанив кул-хакера вы очень сильно его обломаете (ибо куки-то он допрет стереть, а браузер сменить - вряд ли). Но с тем же забаните 1-2% своих посетителей. Через часок снимайте бан :-) Кул-хакеры к вам больше не придут.

Простим автору все грамматические ошибки/опечатки и обратимся к смыслу. Итак, представим себе, что мы - ультракул-хакеры с полными карманами проксей. Нас банят. Но мы меняем IP, стираем куки и заходим вновь. И тут СГМ (Самый Главный Модератор) применяет свое сверхсекретное оружие - бан по т.н. "коду браузера". Мы вновь оказываемся в бане. Пытаемся использовать старую-добрую технику прохождения - не срабатывает...

Наши действия:

  1. Скачиваем дистрибутив чата, устанавливаем его на своей машине.
  2. Делаем себя админом, запускаем чат. Читаем банановую помощь.
  3. Лезем в сырцы в поисках способа вычисления т.н. "кода браузера".
  4. Проводим пару минут в поисках...
  5. Находим в файле main.php функцию brcode(), которая как раз и занимается вычислением т.н. "кода браузера". Далее, отыскиваем, какой параметр передается этой функции. В итоге, получаем следующую формулу вычисления т.н. "кода браузера": substr(md5(getenv("HTTP_USER_AGENT")), 0, 6). Да... Что тут сказать? Ладно, ничего говорить не буду, а просто перейду к следующему действию ультракулхацкера.
  6. Запускаем regedit и открываем раздел, к примеру, HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ User Agent \ Post Platform. Создаем в этом разделе строковый параметр с именем "Ultra-pooper post platform" и значением, к примеру, "IEAK".
  7. Запускаем IE (удаление кук и смена ip была произведена при неудачной попытке пройти сквозь бан) и беспрепятственно входим в чат. СГМ попустится...

Но это я рассказал о хорошем. А теперь о плохом. Не знаю, какую статистику собирал ув. автор чата на php.sbp.ru, но вот вам статистика браузеров с моего сайта (текущая, за неполный сентябрь 2004):

номерпроцентUser-Agent
128.52%Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
26.69%Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
35.34%Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
45.31%Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)

Думаю, все уже поняли куда я клоню. Стратегия ультракулхацкера: сидеть в чате с User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) и дожидаться бана по т.н. "коду браузера". После чего около 30% всех присутствующих пойдут в баню. После этого можно применить указанную технику снятия бана и вернуться в чат, затесавшись в поредевшие ряды чатовцев. (30% — в лучшем случае (или в худшем. Смотря по какую сторону баррикад находиться). Постоянные посетители чатов, как правило, могут позволить себе новую технику, и поэтому для них цифра 30% является, скорее всего, заниженной).

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

Внимание!
Данный материал публикуется только в ознакомительных целях для повышения Вашей квалификации и указанию разработчикам на потенциальную недоработку.