Защита интернет сайтов и форумов

Автор: Пользователь скрыл имя, 12 Ноября 2010 в 11:29, курсовая работа

Краткое описание

В данной работе рассматривает форум, который построен на движке phpBB. Так как данный вид движка очень популярен в глобальной сети, то существует такая проблема, как автоматическая регистрация и размещение на форуме вредоносных и рекламных ссылок от «спам-ботов». «Спам-боты» - это программы, написанные для поиска в сети определенных сайтов, форумов, досок объявлений со слабой защитой при регистрации или размещения объявлений. Данная программа автоматически регистрируется на сетевом ресурсе и размещает во всех темах форумов и досок объявлений рекламные ссылки и вредоносный контент. В данной работе рассматривается создание дополнительного модуля защиты при регистрации пользователей на форуме, построенном на движке phpBB, и внедрением его в дизайн страницы.

Оглавление

1.РЕФЕРАТ………………………………………………………………..….3
2.ВВЕДЕНИЕ…………..………...…………………………………………..4
3.1 ПОСТАНОВКА ЗАДАЧИ…..……………..…………………………….5
4.2 ВЫБОР ТЕХНИЧЕСКИХ СРЕДСТВ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ……………………………………………………………6
5.3 СТРУКТУРА БАЗЫ ДАННЫХ
3.1 Основы работы с СУБД MySQL………………………………………7

3.2 Стандартные функции PHP для работы с MySQL……………….......9

3.3 Дополнительные таблицы базы данных для защитного модуля…..12

6. 4 СТРУКТУРА ПРИЛОЖЕНИЯ

4.1 Основные функции создаваемого модуля…………………………..13

4.2 Установка модуля защиты……………………………………………14

7. 5 ОПИСАНИЕ ИНТЕРФЕЙСА МОДУЛЯ ЗАЩИТЫ………………….20

8. 6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ И АДМИНИСТРАТОРА………22

9. ЗАКЛЮЧЕНИЕ………………………….………………………………...24

10. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………25

Файлы: 1 файл

1_курсовой.doc

— 836.50 Кб (Скачать)

СОДЕРЖАНИЕ

  1. РЕФЕРАТ………………………………………………………………..….3
  2. ВВЕДЕНИЕ…………..………...…………………………………………..4
  3. 1 ПОСТАНОВКА ЗАДАЧИ…..……………..…………………………….5
  4. 2 ВЫБОР ТЕХНИЧЕСКИХ СРЕДСТВ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ……………………………………………………………6
  5. 3 СТРУКТУРА БАЗЫ ДАННЫХ

    3.1 Основы работы с СУБД MySQL………………………………………7

    3.2 Стандартные функции PHP для работы с MySQL……………….......9

    3.3 Дополнительные таблицы базы данных для защитного модуля…..12

   6. 4 СТРУКТУРА ПРИЛОЖЕНИЯ

      4.1 Основные функции создаваемого модуля…………………………..13

      4.2 Установка модуля защиты……………………………………………14

   7. 5 ОПИСАНИЕ ИНТЕРФЕЙСА МОДУЛЯ ЗАЩИТЫ………………….20

   8. 6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ И АДМИНИСТРАТОРА………22

   9. ЗАКЛЮЧЕНИЕ………………………….………………………………...24

   10. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………25

   

   ПРИЛОЖЕНИЕ: ЛИСТИНГ ПРОГРАММНЫХ МОДУЛЕЙ

   

  
 
 
 
 

 

    РЕФЕРАТ

курсового проекта  Шпаковского С.В.

«Защита форумов от регистрации «спам-ботов»» 

     Объем работы 24 с., в том числе 9 рис., 6 наим. лит., 1 приложение.

      Ключевые  слова: интернет, форум, HTML, PHP, база данных, СУБД, сервер, клиент, регистрация, администрирование. 

     В курсовой работе описан процесс создания модуля для дополнительной защиты форумов при регистрации пользователей. 

 

ВВЕДЕНИЕ 

     На  данный момент в глобальной сети интернет существует огромное количество разнонаправленных форумов. Для того чтобы создать свой собственный форум, необходимо иметь хостинг и доменное имя в сети интернет. Существует довольно много различных готовых движков для создания форумов, все они в основном построены с помощью PHP и СУБД MySQL. В данной работе рассматривает форум, который построен на движке phpBB. Так как данный вид движка очень популярен в глобальной сети, то существует такая проблема, как автоматическая регистрация и размещение на форуме вредоносных и рекламных ссылок от «спам-ботов». «Спам-боты» - это программы, написанные для поиска в сети определенных сайтов, форумов, досок объявлений со слабой защитой при регистрации или размещения объявлений. Данная программа автоматически регистрируется на сетевом ресурсе и размещает во всех темах форумов и досок объявлений рекламные ссылки и вредоносный контент. В данной работе рассматривается создание дополнительного модуля защиты при регистрации пользователей на форуме, построенном на движке phpBB, и внедрением его в дизайн страницы.    

 

1 ПОСТАНОВКА ЗАДАЧИ 

     Рассмотрим  исходный форум на предмет защиты от нежелательной или автоматической регистрации. На данном движке предусмотрено  две степени защиты от нежелательной  или автоматической регистрации: 

     1) «Капча» (от англ. CAPTCHA «Completely Automated Public Turing test to tell Computers and Humans Apart») — это полностью автоматизированный публичный тест Тьюринга, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Основная идея теста: предложить пользователю такую задачу, которую может решить человек, но которую несоизмеримо сложно предоставить для решения компьютеру. В основном это задачи на распознавание символов (рис. 1).  

 
 
 

Рис. 1 Образец «капчи».  

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

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

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

 

2 ВЫБОР ТЕХНИЧЕСКИХ СРЕДСТВ И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 

      Техническим средством для исполнения задания был выбран персональный компьютер на базе двуядерного процессора AMD Athlon под управлением операционной системы Microsoft Windows 7, соответствующий всем требованиям поставленного перед нами задания.

      Программное обеспечение выбиралось исходя из используемых средств при работе с движком форума phpBB, который написан с применением скриптового языка программирования PHP и баз данных MySQL. Для создания и тестирования модуля использовался программный пакет Denwer, который включает в себя:

  1. Язык программирования PHP версии 5.3.
  2. СУБД MySQL версии 5.1.
  3. Административная панель управления базами данных phpMyAdmin версии 2.11
  4. Локальный WEB – сервер Apache версии 2.
 

   Установка пакета происходит в полуавтоматическом режиме, при котором пользователю предлагается выбрать ввести вручную исходный каталог для хранения системных файлов, а так же создать виртуальный диск, содержащий файлы локальных доменов, страниц сайтов и скриптов. Запуск локального web – сервера производится с ярлыка на рабочем столе, проверка функционирования производится набором строки http://localhost/denwer/ в браузере.

 

3 СТРУКТУРА БАЗЫ ДАННЫХ 

3.1 Основы работы с СУБД MySQL 

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

     SQL обычно описывается как стандартный язык, используемый для взаимодействия с реляционными базами данных. Однако SQL не является языком программирования, как С, C++ или PHP. Скорее, это интерфейсное средство для выполнения различных операций с базами данных, предоставляющее в распоряжение пользователя стандартный набор команд. Возможности SQL не ограничиваются выборкой данных из базы. В SQL поддерживаются разнообразные возможности для взаимодействия с базой данных, в том числе:

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

   В реляционных СУБД данные организуются в виде набора взаимосвязанных таблиц. Связи между таблицами реализуются в виде ссылок на данные других таблиц. Таблицу можно представить себе как двухмерный массив, в котором расположение каждого элемента характеризуется определенными значениями строки и столбца. Пример реляционной базы данных изображен на рис. 2. 

  
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 

Рис. 2 Пример реляционной базы данных. 

     Как видно из рис. 2, каждая таблица состоит из строк (записей) и столбцов (полей). Каждому полю присваивается уникальное  имя. Так же существует связь между таблицами customer и orders, обозначенная стрелкой. В информацию о заказе включается короткий идентификатор клиента, что позволяет избежать избыточного хранения имени и прочих реквизитов клиента. В изображенной базе данных существует еще одна связь — между таблицами orders и products. Эта связь устанавливается по полю prod_id, в котором хранится идентификатор товара, заказанного данным клиентом (определяемого полем custjd). Наличие этих связей позволяет легко ссылаться на полные данные клиента и товара по простым идентификаторам. Правильно организованная база данных превращается в мощное средство организации и эффективного хранения данных с минимальной избыточностью.

     Для выполнения операций с базами данных в SQL существует специальный набор  общих команд — таких как: SELECT, INSERT, UPDATE и DELETE. Например, если потребуется  получить адрес электронной почты  клиента с идентификатором 2001cu, достаточно выполнить следующую команду SQL: SELECT cust_email FROM customers WHERE custjd = '2001cu';

Команда построена по шаблону: SELECT имя_поля FROM имя_таблицы [WHERE условие];. Для добавления в таблицу новой записи необходимо выполнить команду SQL: INSERT into имя_таблицы VALUES ('значение_поля_1', 'значение_поля_2', 'значение_поля_n');. Для удаления записей из таблицы используется следующая команда: DELETE FROM имя_таблицы WHERE имя_поля = 'значение_поля';.

 

      3.2 Стандартные функции PHP для работы с MySQL

      В данном разделе описываются стандартные  функции PHP для взаимодействия с сервером MySQL. Общая последовательность действий при взаимодействии с сервером MySQL выглядит следующим образом:

  1. Установка соединения с сервером MySQL. Если попытка завершается неудачей, вывести соответствующее сообщение и завершить процесс.
  2. Выбор базы данных сервера MySQL. Если попытка выбора завершается неудачей, вывести соответствующее сообщение и завершить процесс. Допускается одновременное открытие нескольких баз данных для обработки запросов.
  3. Обработка запросов к выбранной базе (или базам).
  4. После завершения обработки запросов закрытие соединения с сервером баз данных.

   Соединение  с сервером MySQL выполняется с помощью функции mysql_connect( ). Полный синтаксис функции следующий:

int mysql_connect ([string хост [:порт] [:/путь//к/сокету] [, string имя_пользователя] [, string пароль]) 

     В параметре хост передается имя хостового компьютера, указанное в таблицах привилегий сервера MySQL, оно же используется для перенаправления запросов на web-сервер, на котором работает MySQL, поскольку к серверу MySQL можно подключаться в удаленном режиме. Наряду с именем хоста могут указываться необязательные параметры — номер порта, а также путь к сокету (для локального хоста). Параметры имя_пользователя и пароль должны соответствовать имени пользователя и паролю, заданным в таблицах привилегий MySQL. Все параметры являются необязательными, поскольку таблицы привилегий можно настроить таким образом, чтобы они допускали соединение без проверки. Если параметр хост не задан, mysql_connect( ) пытается установить связь с локальным хостом.

     Пример открытия соединения с MySQL: 

@mysql_connect("local host", "web", "4tf9zzzf") or die("Could not connect to MySQL server!"); 

 
В данном примере localhost — имя компьютера, web — имя пользователя, а 4tf9zzzf — пароль. Знак @ перед вызовом функции mysql_connect( ) подавляет все сообщения об ошибках, выдаваемые при неудачной попытке подключения, — они заменяются сообщением, указанным при вызове die( ). Значение, возвращаемое при вызове mysql_connect( ), в данном примере не используется. Если в программе используется всего одно соединение с сервером MySQL, это вполне нормально. Но если программа устанавливает соединения с несколькими серверами MySQL на разных хостах, следует сохранить идентификатор соединения, возвращаемый при вызове mysql_connect( ), чтобы адресовать последующие команды нужному серверу MySQL. Пример: 

Информация о работе Защита интернет сайтов и форумов