Rambler's Top100
 
 
  01 декабря 2008 года Компьюлента
CIO
Терралаб
Бизнес-журнал
в поле зрения | обзоры и тесты | своя игра | интерактив
Сетевые пакости
Автор: Алексей Павленко
Опубликовано 15 августа 2001 года

Всех обитателей Сети можно разбить на несколько групп:

  • простые посетители Web-ресурсов;
  • владельцы этих ресурсов;
  • владельцы серверов, на которых располагаются сами страницы;
  • подлые хакеры (принадлежащие иногда к вышеперечисленным группам), мечтающие всем досадить.

Строго говоря, далее по тексту хакерами я назвал людей, которые ищут глюки в программном обеспечении и психологии человека. Не обязательно они делают что-то плохое. А под нарушением безопасности я понимал не только изменение главной страницы сайта на надпись «СайТ ХаКНуТ кРУтЫмИ ХаКерАмИ», но и действия, приводящие к унижению и потери уважения.

Простейший пример — оставить мат в гостевой книге. Вроде бы мелочи, но если владелец сайта вовремя не проконтролирует (уехал в отпуск), то запись увидят посетители, читающие книгу. Понятно, что хорошего в этом мало. Разве что запись представляет собой шедевр русского мата.

А ведь такое может сделать каждый, причем есть еще форумы, электронная почта, чаты. Как раз на днях я просматривал старые выпуски «Компьютерры» и нашел заметку про участие Ольги Дергуновой в чате. Такое впечатление, что сетевое хамство становится все большей нормой в интернетовской жизни... Впрочем, это тема для отдельной статьи, а пока рассмотрим более интересные вопросы.

Скорее всего, у вас есть домашняя страница или даже интересный для многих ресурс. В первом случае место для хранения информации легко найти, ведь существует большое число русских бесплатных серверов  (Народ.Ру, Newmail.ru, by.ru). Однако со временем ваш сайт разрастется, и все чаще вам не будет хватать возможностей для реализации задумок: 50 мегабайт, кажущие в начале огромной величиной, быстро закончатся. Вам надоест переделывать каждый файл после изменения дизайна или смены адреса электронной почты. Вы с удивлением узнаете (хотя, наверное, сейчас уже все про это слышали), что можно не указывать длинные адреса типа http://mysite.server.ru/file.html, а просто писать file.html. Катастрофой будет момент, когда ваш сайт закроют из-за наличия несуществующих запрещенных материалов. Головной болью обернется временная недоступность сервера. Вам захочется иметь свой форум и чат, но стандартные бесплатные вас уже не будут устраивать. Вот тогда-то вы узнаете про всякие CGI, Perl, SSI, CSS. К огромнейшему сожалению окажется, что часть из перечисленного нельзя использовать простому смертному. Вы загоритесь мыслью заиметь домен второго уровня (эх, жалко, что первого нельзя) и получить неограниченный хостинг. В конце концов, вы найдете сервер, предоставляющий то, что нужно, на приемлемых для вас условиях. К этому времени вы уже будете уметь писать CGI-скрипты, и вот тут появляются новые проблемы.

Perl я выучил, когда готовился к экзамену в университете (если бы знал, что его поставят автоматом, то не скоро бы за этот язык взялся, а зря, потому что это «рулез форева»). Perl — превосходный язык для написания программ для сайта. Можно создать именно тот форум, гостевую, чат, счетчик, которые подходят именно вам. Свобода действий огромнейшая! Благо, что для языка дополнительных библиотек полно, можно и с реестром работать, и Windows-интерфейс использовать в страницах.

Фильтруй теги!

Но эта самая свобода обворачивается тем, что можно допустить непростительную ошибку. Писал я как-то чат. Хороший он вышел, не использовал Refresh, логи сообщений велись, шепот работал и т.д. И показалось мне, что неплохо будет, если пользователи смогут использовать в посылках HTML-теги. Естественно, только те пользователи, которым я или назначенные администраторы это позволят. Иначе очередной «продвинутый» сетевой хам напишет что-нибудь вроде <font size=10 color=yellow>HELLO!!!</font>. И это еще цветочки, а ведь есть <img src='...'> и инструкции <!--#SSI_директива="параметры"-->... Чтобы сильно не думать (ленивый я), достал толстую книжечку по Perl и взял из нее кусок кода, фильтрующий теги. Уже когда лег спать, вдруг осенило меня: не всегда это будет работать! Во-первых, не все теги фильтруются, во-вторых, ведь можно неправильно их писать, или писать правильно, но не закрывать. Попробовал - и действительно, если пользователь посылает в сообщении <b> и не закрывает его, то следующие записи уже выводятся жирным начертанием. Пришлось добавить проверку на открывающиеся и закрывающиеся теги и ограничить их использование только стандартными.

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

Идентификация

Теперь про идентификацию. Вы задумывались над тем, что происходит при вводе вашего имени и пароля? Естественно, ввод сравнивается с базой данных, а дальше? Почему ничего не спрашивается далее, ведь вы не можете зайти по адресу на вторую страницу — выкинет на главную. Весь трюк в том, что ваша идентификационная информация передается прямо в скрытых элементах формы. На простеньких чатах вы можете найти свое имя и пароль в теле HTML. Кодируется примерно так:

<input type='hidden' name='nick' value='Ваше имя'>
<input type='hidden' name='password' value='Ваш пароль'>

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

А на совсем простых чатах для идентификации хранится только имя. Десятилетним «хакерам» очень нравится сохранять страницу, задающую фреймовую структуру, на диск и менять имя. Выходило так, что вы внезапно начинали ругаться. Я знаю один из таких чатов, он пользовался большой популярностью (сейчас, правда, глюки убрали). На сайте «Территория взлома» как раз лежит статья «Как взломать HTML-чат». Остается только улыбнуться.

Чтобы не передавать имя с паролем, рекомендуется при входе пользователя выделять ему временный случайный идентификатор и дальше работать уже с ним. В HTML-файлах ссылки теперь будут ссылаться на http://server.ru/cgi-bin/chat.pl?id=Wfw999YsJBdJ. Через заданный промежуток времени, если от пользователя не получено подтверждения, что он висит на линии, идентификатор обнуляется и теряет силу. То же самое происходит после того, как вы жмете ссылку «Выход».

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

Все бы хорошо, но несколько лет назад я придумал способ, позволяющий узнать идентификатор человека. Мне надо было, чтобы этот человек зашел ко мне на сайт, нажав на гиперссылку. Сильно не приходилось уговаривать, просто назывался как-то загадочно и вешал на ник ссылку на сайт (хорошие форумы и чаты позволяют это делать). Пользователь попадал ко мне на страницу, а на ней грузилась картинка счетчика. Кроме функций счетчика велась небольшая статистика (подробнее о возможностях счетчика см. статью «Мне в логах видно все...»). Из нее я узнавал, с какой страницы ко мне зашли. Как вы догадались, я получал именно http://server.ru/cgi-bin/chat.pl?id=Wfw999YsJBdJ. Когда рассказал об этом создателю одного отличного чата, он долго думал о способе защиты. Теперь перед переходом на чей-то сайт в новом окне запускается скрипт, производящий редирект.

Заметьте, в этом примере мое участие было минимальным, просто когда-то на глаза попала статистика. А что, если кто-то решит серьезно заняться вашим сайтом?

Гостевые

Скрипты на Perl помогают существенно сократить время. Иногда в неблаговидных целях. Вернемся к гостевым книгам. В них обычно допускается ввод имени, e-mail, адреса сайта и отзыва. «Гостевые» нынче растут как грибы. Зашел человек на сайт, ничего полезного не нашел — у него самого все гораздо круче, только вот обидно, что никто этого не замечает. Дай, думает человек, оставлю запись в гостевой: «Круто, но у меня еще круче», и укажу адрес своей страницы. Хотя бы один человек, да зайдет.

Страница 2>>

ТАКЖЕ В РАЗДЕЛЕ
18 февраля 2004 года
Файлообмен: Freenet и Gnutella 
17 февраля 2004 года
Файлообмен: eDonkey 
16 февраля 2004 года
Файлообмен: KaZaА 
 
SQL Server 2008 - это шифрование баз данных, регулятор ресурсов, управление серверами на основе Политик Администрирования, а также готовность управлять большими объемами данных.

TechDays.ru - окунитесь в мир технологий Microsoft
Более 50 технических докладов для ИТ-специалистов и разработчиков. Узнайте самое интересное по каждой технологии за 15 минут. Если интересно - прослушайте дополнительные доклады.

Театр ИТ-кошмаров
Ваша ИТ-инфраструктура не способна выдерживать темп развития бизнеса? Не прячьтесь от реальности. Загляните в Театр ИТ-кошмаров и посмотрите правде в глаза.

САМОЕ ПОПУЛЯРНОЕ
Диалоги с программистами. Часть 3: iPhone и бар на пляже
Сегодня в нашем распоряжении программист, который создает код для совершенно непрограммистского устройства - iPhone. Да, здесь есть свои особенности...
Текстовые развлечения
Поработаем в жанре ASCII Art и расскажем, как научиться рисовать при помощи символов, как переводить изображение любого формата в текстовый файл и как взглянуть на интерфейс Windows сквозь призму псевдографики.
Нетбуки против Windows
Нетбукам нужна лёгкая операционная система. Windows Vista, определённо, такой не является. Windows XP давно морально устарела. Linux? Или всё-таки подождать выхода легковесной версии Windows 7?
Неделя после Fallout
Продажи новой игры из серии Fallout, разработанной студией Bethesda, идут очень неплохо - и это при том, что первый патч принёс игрокам кучу проблем, а японцы, оказалось, лишились части одного из квестов.
/  бумажный номер

Тема номера: Кризис в ИТ Читайте на сайте тему номера "Кризис в ИТ" и другие статьи из журнала "Компьютерра" от 04 ноября 2008 года
  Архив номеров журнала

О проекте | Реклама на сайте | Рассылки сайта | КПК–версия | RSS-трансляция

© ООО «Компьютерра–Онлайн», 1997 — 2008.
При цитировании и использовании любых материалов ссылка на портал «Компьютерра–Онлайн» обязательна (для Интернет–изданий — www.computerra.ru)
Редакция сайта: site@computerra.ru
Техподдержка сайта: websupport@computerra.ru
Редакция журнала: inform@computerra.ru
Отдел рекламы: reklama@computerra.ru
Телефон: (495) 232–22–61, (495) 232–22–63
Работает на «Битрикс: Управление сайтом»
Почта защищена сервером «СПАМОРЕЗ»
Трилан — продвижение сайта,
поисковая оптимизация сайта

Сайт работает на сервере DEPO Computers
Rambler's Top100