Противодействие интернет-ботам

Основные вредоносные действия интернет-ботов, особенности противодействия их автоматическим действиям. Характеристика системы противодействия интернет-ботам CAPTCHA, написание программы, которая демонстрирует принцип ее работы. Алгоритм CAPTCHA-проверки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.02.2012
Размер файла 889,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • 1. Теоретические основы противодействию интернет-ботам
  • 1.1 Понятие CAPTCHA
  • 1.2 Алгоритм CAPTCHA-проверки
  • 1.3 Распознавание защищенной надписи
  • 1.4 Альтернативные способы защиты
  • 2. Практическая часть
  • 2.1 Описание программы
  • 2.2 Блок-схема программы
  • 2.3 Код программы
  • 2.4 Результаты тестирования программы
  • Заключение
  • Библиографический список

Введение

Бот это такая специальная программа, выполняющая автоматически какие-либо действия через те же интерфейсы, что и обычный пользователь. Обычно боты предназначаются для выполнения работы, однообразной и повторяемой, с максимально возможной скоростью.

Основные вредоносные действия ботов:

· спам-боты, собирающие адреса E-mail из контактных форм и гостевых книг;

· программы, загружающие интернет-канал потоком ненужной информации (как правило, рекламного характера);

· сайты, собирающие информацию о безвредных сайтах, для использования её в автоматически создаваемых дорвеях;

· некоторые вирусы и черви;

· DoS - и DDoS-атаки;

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

Для противодействию автоматическим действиям интернет-ботов сейчас наиболее широко применяется так называемая CAPTCHA.

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

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

Цель данной курсовой работы является изучение системы противодействию интернет-ботам CAPTCHA, а также написание программы демонстрирующую принцип работы CAPTCHA.

Для достижения данной цели необходимо выполнить следующие задачи:

· рассмотреть понятие CAPTHCA;

· изучить алгоритм CAPCHA-проверки;

· ознакомиться с основами распознавания защищенной надписи;

· изучить альтернативные системы противодействию интернет-ботам.

Объектом курсовой работы является генерация и проверка CAPCHA.

Предметом курсовой работы является программа генерирующая CAPCHA картинки.

При написании курсовой работы были использованы следующие методы: библиографический, описание, анализ и синтез документации, моделирование, обобщение.

Информационной базой послужили учебные пособия по программно-аппаратной защите информации, периодические издания и информационные ресурсы Интернет-порталов.

Поставленные цель и задачи обусловили структуру курсовой работы, которая состоит из введения, 2 глав, заключения и библиографического списка.

интернет бот алгоритм программа

1. Теоретические основы противодействию интернет-ботам

1.1 Понятие CAPTCHA

CAPTCHA - это аббревиатура от английских слов "Completely Automatic Public Turing Test to Tell Computers and Humans Apart" - полностью автоматический тест Тьюринга для различения компьютеров и людей.

Тест Тьюринга - эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье "Вычислительные машины и разум", опубликованной в 1950 году в философском журнале "Mind". Тьюринг задался целью определить, может ли машина мыслить.

Стандартная интерпретация этого теста звучит следующим образом: "Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы - ввести человека в заблуждение, заставив сделать неверный выбор".

Термин "CAPTCHA" появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую с лёгкостью может решить человек, но которую несоизмеримо сложнее решить компьютеру.

Применяются CAPTCHA для того, чтобы предотвратить множественные автоматические регистрации и отправления сообщений программами-роботами. Т.е. задача CAPTCHA - защита от спама, флуда и захвата аккаунтов.

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

1.2 Алгоритм CAPTCHA-проверки

Рассмотрим алгоритм CAPTCHA-проверки посетителя, сделав упор на защиту от уязвимостей, не связанных с собственно распознаванием картинки.

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

Скрипт генерирует случайный текст, записывает его в сессию и выдает картинку с этим текстом посетителю. Потом, при проверке, ответ, введенный посетителем, сравнивается с эталоном, сохраненным в этой сессии.

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

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

Генерация кода самой картинкой позволяет реализовать функцию "получить другой код, если этот плохо читается пользователем" - будет достаточно обновить только картинку.

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

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

1.3 Распознавание защищенной надписи

Распознавание делится на 2 основным этапа:

· определение местоположения и границ каждого символа;

· собственно распознавание символа.

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

Если места символов не фиксированы, следующий путь по их выделению - сравнение по контрасту с фоном. Если цвет символов отличается от цвета фона это не дает никакой защиты:

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

Собственно распознавание символа может происходить разными способами.

Самый простой способ - "наложение маски". У программы есть эталонный шрифт, с каждым символом которого она сравнивает распознаваемый. Тот символ, у которого больше всего совпадений (пикселей того же цвета, что и в эталоне), и считается ответом.

Сравнению с маской подвержены CAPTCHA, не применяющие геометрические искажения символов, а также использующие один шрифт (или очень ограниченное их количество).

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

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

1.4 Альтернативные способы защиты

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

1. Способы, требующие действий от пользователя. Существует множество идей CAPTCHA-защиты, отличающихся от классического варианта "введите код, изображенный на картинке". Их можно также разделить на две основные части: задачи, обращающиеся к "рефлексам" пользователя (на узнавание-распознавание), и задачи, обращающиеся к его логике (вопросы, задачи). Первые приятнее для пользователя, т.к. не заставляют его думать.

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

Текстовые задачи. Человеку задается вопрос или загадка, на который он должен дать ответ. Ответ нужно либо выбрать из списка, либо ввести в поле. Посколько при выборе из списка вероятность дать правильный ответ наугад довольно велика (1/n, где n - количество вариантов), обычно пользователя заставляют ответить на ряд вопросов, ибо вероятность угадать правильные ответы на несколько вопросов будет произведением вероятностей ответить на каждый из них.

Преимущества: проверка доступна для людей с нарушениями зрения, а также для тех, кто пользуются клиентами, не отображающими изображения.

Недостатки:

· пользователь должен быть хорошо знаком с языком, на котором задаются вопросы (а зачастую и с реалиями и менталитетом коренных носителей языка);

· если используются готовые вопросы, то их количество, очевидно, конечно, так что злоумышленник может составить базу вопросов с ответами.

Распознавание предметов

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

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

Преимущества: пользователю может быть легче отличить кошку от собаки, чем различить, к примеру, сильно искаженные и зашумленные буквы "N" и "H". Боту же, напротив, буквы, как более простые образы, различить будет проще.

Недостатки:

· пользователю должны быть знакомы объекты и их названия;

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

2. Способы, не требующие действий от пользователя. Эти способы призваны обеспечить отсечение ботов при том, чтобы не напрягать пользователя решением зачастую утомительной задачки на "человечность".

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

Ограничение количества запросов

Ограничение количества запросов с одного IP-адреса - это довольно простой способ, малоэффективный, при достаточной подготовленности атакующего. Не секрет, что существуют компьютеры, называемые "анонимными прокси", которые позволяют делать запросы через себя, в результате чего сайт видит в качестве IP-адреса посетителя адрес этого прокси. Злоумышленник может использовать большое количество этих прокси, создавая иллюзию того, что к сайту обращаются разные люди. Ограничение через выставление посетителю cookie также малоэффективно, их легко можно стереть или вовсе игнорировать.

Ограничение по IP имеет смысл тогда, когда заставлять пользователя решать CAPTCHA нельзя, но защититься надо. К примеру, так делают поисковые сайты.

Косвенные признаки

Косвенные признаки не дают гарантии, а только увеличивают вероятность, что бот "не пройдет".

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

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

2. Практическая часть

2.1 Описание программы

На рисунке ниже (см. рис.1) изображено окно программы, которая генерирует CAPTCHA.

Рисунок 1 - Внешний вид программы.

При открытии программы, программа автоматически генерирует CAPTCHA код, который необходимо ввести в специально выделенное для этого поле. В случае если код прочитать невозможно, то предусмотрено обновление CAPTCHA кода. Для этого можно либо нажать на кнопку "Обновить" либо просто кликнуть мышкой по картинке с кодом. После того как код введен, для проверки правильности ввода кода необходимо нажать кнопку "Ок", после чего программа автоматически выведет сообщении о правильном или неправильном вводе CAPTCHA кода.

Для выхода из программы необходимо нажать на кнопку "Выход".

2.2 Блок-схема программы

Блок схема для генерации CAPTCHA картинки

Блок схема для установки отображаемой CAPTCHA картинки

Блок схема для проверки CAPTCHA картинки

2.3 Код программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Mask, XPMan;

type

TForm1 = class (TForm)

Image1: TImage;

Label1: TLabel;

MaskEdit1: TMaskEdit;

ButtonTest: TButton;

Button1: TButton;

XPManifest1: TXPManifest;

Button2: TButton;

procedure FormCreate (Sender: TObject);

procedure SetCaptcha;

function TestCaptcha (C: String): Boolean;

procedure ButtonTestClick (Sender: TObject);

procedure Image1Click (Sender: TObject);

procedure Captcha (Code: string);

function RandStr (len: integer): string;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

end;

var

Form1: TForm1;

CurCod: string;

implementation

{$R *. dfm}

// ************************************************************

// Создание формы

procedure TForm1. FormCreate (Sender: TObject);

begin

SetCaptcha;

end;

// ************************************************************

// Клик по картинке, обновление капчи

procedure TForm1. Image1Click (Sender: TObject);

begin

SetCaptcha;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

SetCaptcha;

end;

// ************************************************************

// Генерация капчи

procedure TForm1. SetCaptcha;

begin

CurCod: = RandStr (6);

Captcha (CurCod);

end;

// ************************************************************

// Создание случайной строки

function TForm1. RandStr (len: integer): string;

const

alfa='QWERTYUIOPASDFGHJKLZXCVBNM';

var

i: integer;

begin

randomize;

result: ='';

for i: = 1 to len do

result: =result+alfa [random (length (alfa) - 1) +1];

end;

// ************************************************************

procedure TForm1. Captcha (Code: string);

const

lines = 3;

var

x,y,g: integer;

begin

// Установки картинки

Image1. Canvas. Brush. Color: = clWhite;

Image1. Canvas. Brush. Style: = bsSolid;

Image1. Canvas. FillRect (Image1. Canvas. ClipRect);

// Точки на капче

for x: = 0 to Image1. Width - 1 do

for y: = 0 to Image1. Height - 1 do

if Random (1000) mod 2 = 0 then begin

g: = Random (100) +100;

Image1. Canvas. Pixels [x,y]: = rgb (g,g,g);

end;

// Буквы на капче

Image1. Canvas. Brush. Style: = bsClear;

for x: = 1 to 6 do begin

g: = Random (100) +100;

// Случайный цвет

case Random (3) of

0: Image1. Canvas. Font. Color: = rgb (g,0,0);

1: Image1. Canvas. Font. Color: = rgb (0,g,0);

2: Image1. Canvas. Font. Color: = rgb (0,0,g);

end;

// Случайный шрифт

case random (2) of

0: Image1. Canvas. Font. Style: = [fsBold];

1: Image1. Canvas. Font. Style: = [];

end;

// Случайный размер и положение

Image1. Canvas. Font. Size: = 15 + Random (6);

Image1. Canvas. TextOut ( (x-1) *15+10,random (image1. Height-Image1. Canvas. TextHeight ('1')), Code [x]);

end;

// Линии на капче

Image1. Canvas. Pen. Color: = clBlack;

for x: = 0 to lines - 1 do begin

Image1. Canvas. MoveTo (0, Random (Image1. Height));

Image1. Canvas. LineTo (Image1. Width, Random (Image1. Height));

end;

end;

// ************************************************************ // Проверка

procedure TForm1. ButtonTestClick (Sender: TObject);

begin

if TestCaptcha (MaskEdit1. Text) then

ShowMessage ('Капча верная! ')

else

ShowMessage ('Капча неверная! ')

end;

// ************************************************************

// Функция проверки

function TForm1. TestCaptcha (C: String): Boolean;

begin

Result: = (CurCod = C);

end;

// ************************************************************

procedure TForm1. Button2Click (Sender: TObject);

begin

close;

end;

end.

2.4 Результаты тестирования программы

Для проверки работоспособности программы необходимо запустить программу и ввести код с картинки. При правильном вводе кода с картинки программы автоматически выведет сообщение с текстом "Капча верная" (см. рис 2). Если же код введен неправильно то программа автоматически выведет сообщение с текстом "Капча не верная" (см. рис.3).

Рисунок 2 - Капча введена правильно.

Рисунок 3 - Капча введена неверно.

Заключение

В результате выполнения курсовой работы была изучена система противодействию интернет-ботам CAPTCHA, а также разработана программа в визуальной среде программирования Borland Delphi 7, реализующую пример генерации CAPTCHA.

Также была выполнения экспериментальная проверка работы данной программы.

Таким образом, задание на курсовую работу выполнено в полном объеме.

Библиографический список

1. Анин Б.В. Защита компьютерной информации: учебное пособие / Б.В. Анин. - СПб.: BHV, 2006 - 376 с.

2. Белов Е.Б. Основы информационной безопасности: учебное пособие / Е.Б. Белов. - М.: Горячая линия - Телеком, 2007 - 544 с.

3. Мельников В.П. Информационная безопасность и защита информации / В.П. Мельников. - М.: Академия. - 2009. - 336 с.

4. Блинов А.М. Информационная безопасность: учебное пособие / А.М. Блинов. - СПб.: ГУЭФ, 2010 - 196 с.

5. Герасименко В.А. Защита информации в автоматизированных системах обработки данных / В.А. Герасименко. - кн.1. - М.: Энергоатомиздат. - 2004. - 400с.

6. Круглов С. Алгоритм CAPTCHA-проверки [Электронный ресурс]: // Проект посвященный CAPTCHA-защите во всех своих проявлениях. - < http://www.captcha.ru/articles/algorithm/> (12.10.2011).

7. Леонтьев В.П. Безопасность в сети Интернет: учебное пособие / В.П. Леонтьев. - 3-е изд., и доп. - М.: ОЛМА Медиа Групп, 2008. - 256 с.

8. Сидоров В. Что такое "капча"? [Электронный ресурс]: // Познавательный портал "Школа жизни". - <http://shkolazhizni.ru/archive/0/n-11337/> (15.10.2011)

Размещено на Allbest.ru


Подобные документы

  • Теоретические и практические аспекты реализации и внедрения Captcha. Разработка методов повышения стойкости теста к автоматическому распознаванию. Алгоритмы генерации изображений. Морфинг шрифтов как новый метод искажения. Правила внесения искажений.

    дипломная работа [4,0 M], добавлен 13.10.2017

  • Выявление структуры и основных свойств незащищённой сети. Основные компоненты защиты системы. Исследование способов противодействия сетевым атакам. Разработка и формирование структуры защищённой сети с использованием технологии "Открытый Интернет".

    курсовая работа [1,2 M], добавлен 01.07.2011

  • Теоретические основы Интернет-технологий и основных служб сети Интернет. Ознакомление с возможностями подключения к сети Интернет. Основные службы сети. Принципы поиска информации в WWW. Обзор современных Интернет браузеров. Программы для общения в сети.

    курсовая работа [385,2 K], добавлен 18.06.2010

  • История развития, принцип действия новых технологий в глобальной компьютерной сети Интернет: ADSL, IP-телефонии; их основные преимущества. Характеристика Российского интернета, перспективы его развития. Анализ динамики активности интернет-пользователей.

    реферат [876,9 K], добавлен 04.01.2012

  • Развитие информационной среды. Ключевые принципы работы Интернет. Русскоязычные и англоязычные термины Интернет. Расширения веб-страниц. Имена тестовых файлов. URL-адрес в Интернет. Страница поисковой машины Рамблер. Поиск по ключевым словам в Интернет.

    контрольная работа [353,2 K], добавлен 04.10.2011

  • Возникновение и развитие World Wide Web и глобальной сети Интернет. Интернет-браузеры и программы обмена сообщениями. Направление интернет-технологий в образовательном процессе. Применение Интернет-ресурсов в процессе изучения учебных дисциплин.

    дипломная работа [346,2 K], добавлен 22.02.2013

  • Доступ в Интернет и информационная безопасность. Последствия работы вируса, порядок действия "троянских программ". Разновидности вредоносных скриптов. Атаки через порты. Программы для обеспечения безопасности в Интернет, безопасность финансовых операций.

    лекция [41,4 K], добавлен 27.10.2009

  • Интернет - это сотни миллионов компьютеров во всем мире, обменивающиеся между собой информацией по линиям связи. Основные функции Интернет и его информационные возможности. Широкие возможности коммуникации в среде Интернет. Управление через Интернет.

    презентация [874,6 K], добавлен 29.07.2010

  • Предыстория появления сети интернет. Веб-страницы, сайты, порталы. Основные ресурсы интернет: месторасположение и содержание. Библиотеки, газеты, журналы и другие информационные ресурсы. Поисковые системы, каталоги, архивы. Общение через интернет.

    курсовая работа [68,7 K], добавлен 09.05.2012

  • Электронная почта как стандартный сервис Интернет, ее основные преимущества перед традиционной почтой, возможности и назначение. Принцип работы, механизм передачи и получения сообщений, характеристика соответствующей почтовой программы "The Bat!".

    реферат [1,0 M], добавлен 22.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.