Автор: Пользователь скрыл имя, 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
СОДЕРЖАНИЕ
3.1 Основы работы с СУБД MySQL………………………………………7
3.2 Стандартные функции PHP для работы с MySQL……………….......9
3.3 Дополнительные таблицы базы данных для защитного модуля…..12
6. 4 СТРУКТУРА ПРИЛОЖЕНИЯ
4.1 Основные функции создаваемого модуля…………………………..13
4.2
Установка модуля защиты…………………
7. 5 ОПИСАНИЕ ИНТЕРФЕЙСА МОДУЛЯ ЗАЩИТЫ………………….20
8. 6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ И АДМИНИСТРАТОРА………22
9.
ЗАКЛЮЧЕНИЕ………………………….………………………
10. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………25
ПРИЛОЖЕНИЕ: ЛИСТИНГ ПРОГРАММНЫХ МОДУЛЕЙ
РЕФЕРАТ
курсового проекта Шпаковского С.В.
«Защита
форумов от регистрации «спам-ботов»»
Объем работы 24 с., в том числе 9 рис., 6 наим. лит., 1 приложение.
Ключевые слова: интернет, форум, HTML, PHP, база данных, СУБД, сервер, клиент, регистрация, администрирование.
В
курсовой работе описан процесс создания
модуля для дополнительной защиты форумов
при регистрации пользователей.
ВВЕДЕНИЕ
На данный момент в глобальной сети интернет существует огромное количество разнонаправленных форумов. Для того чтобы создать свой собственный форум, необходимо иметь хостинг и доменное имя в сети интернет. Существует довольно много различных готовых движков для создания форумов, все они в основном построены с помощью PHP и СУБД MySQL. В данной работе рассматривает форум, который построен на движке phpBB. Так как данный вид движка очень популярен в глобальной сети, то существует такая проблема, как автоматическая регистрация и размещение на форуме вредоносных и рекламных ссылок от «спам-ботов». «Спам-боты» - это программы, написанные для поиска в сети определенных сайтов, форумов, досок объявлений со слабой защитой при регистрации или размещения объявлений. Данная программа автоматически регистрируется на сетевом ресурсе и размещает во всех темах форумов и досок объявлений рекламные ссылки и вредоносный контент. В данной работе рассматривается создание дополнительного модуля защиты при регистрации пользователей на форуме, построенном на движке phpBB, и внедрением его в дизайн страницы.
1
ПОСТАНОВКА ЗАДАЧИ
Рассмотрим
исходный форум на предмет защиты
от нежелательной или
1)
«Капча» (от англ. CAPTCHA «Completely Automated
Рис.
1 Образец
«капчи».
2) Подтверждение регистрации пользователей администратором форума по электронной почте. При регистрации нового пользователя администратору на адрес электронной почты приходит письмо с данными о регистрации и гиперссылка для активации данного пользователя, до активации пользователь не может создавать новые темы на форуме и участвовать в обсуждении существующих.
Оба вида защиты имеют свои недостатки и уязвимости. «Капча» в виде рисунка с символами подгружается с публичного сервера, а так как данный движок форума существует уже довольно давно, то все виды изображения с текстом уже известны и написание под данный вид защиты «спам-бота» не составляет особой сложности для программиста. Алгоритм основан на распознавание одного из символов на изображении, либо на сравнении размера файла и изображения с исходным. Подтверждение регистрации пользователя по электронной почте имеет недостаток при большом количестве регистрируемых на форуме. Администратор не в силе будет отличить настоящего пользователя от программы, при регистрации хотя бы 10-15 пользователей в день.
Исходя из вышесказанного, было поставлена задача в создании дополнительного модуля защиты при регистрации. Суть модуля в дополнительном тестовом задании на странице регистрации, а именно – в выборе правильного ответа на вопрос или задания, которое размещено на изображении. Так же данный модель создается с возможностью дополнения через администраторскую панель управления.
2
ВЫБОР ТЕХНИЧЕСКИХ СРЕДСТВ
И ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Техническим средством для исполнения задания был выбран персональный компьютер на базе двуядерного процессора AMD Athlon под управлением операционной системы Microsoft Windows 7, соответствующий всем требованиям поставленного перед нами задания.
Программное обеспечение выбиралось исходя из используемых средств при работе с движком форума phpBB, который написан с применением скриптового языка программирования PHP и баз данных MySQL. Для создания и тестирования модуля использовался программный пакет Denwer, который включает в себя:
Установка пакета происходит в полуавтоматическом режиме, при котором пользователю предлагается выбрать ввести вручную исходный каталог для хранения системных файлов, а так же создать виртуальный диск, содержащий файлы локальных доменов, страниц сайтов и скриптов. Запуск локального 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', 'значение_
Соединение с сервером 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. Пример: