Читайте также:
|
|
Для защиты от всего вышесказанного достаточно придерживаться нескольких простых правил:
1. Для целых и дробных величин перед их использованием в запросе
достаточно привести величину к нужному типу.
$id=(int)$id; $total=(float)$total;
Вместо этого можно вставить систему слежения за тестированием на SQL инъекцию.
if((string)$id<>(string)(int)$id)
{
//пишем в лог о попытке взлома
die('ops');
}
2. Для строковых параметров, которые не используются в like, regexp и
т.д, экранируем кавычки.
$str=addslashes($str);
или, лучше,
mysql_escape_string($str)
3. В строках, которые предполагается использовать внутри like, regexp и
т.д, необходимо так же заэкранировать специальные символы, применяющиеся
в этих операторах, если это необходимо. В противном случае, можно
задокументировать использование этих символов.
Рассмотрение атак с использованием CODE-Injection остаётся на самостоятельную проработку.
4.3. ЛР-3, ЛР-4: Реализация дополнительного функционального наполнения серверной части веб-ориентированного приложения.
В данной части лабораторного практикума вам предлагается реализовать дополнительные функции серверной части приложения, такие как:
- сбор и анализ статистики (по максимальному количеству параметров: подключения к системе, выполняемые пользователями действия, системные события и т.д. и т.п.);
- система удалённого администрирования (программный модуль, позволяющий администратору удалённо управлять настройками и процессом функционирования серверной части приложения).
Общие рекомендации по реализации ПО аналогичны рекомендациям из пункта 4.2.
Результатом выполнения данной части лабораторного практикума является готовый набор программных модулей, реализующих дополнительные функции серверной части приложения.
4.4 ЛР-5, ЛР-6: Реализация клиентской части веб-ориентированного
приложения
При разработке клиентской части приложения рекомендуется особое внимание уделить следующим вопросам:
- функциональность и удобство пользовательского интерфейса;
- оптимизация разрабатываемого ПО с целью повышения скорости отклика на команды пользователя;
- реализация предварительного контроля корректности входной информации на стороне клиента с целью снижения нагрузки на сеть и серверную часть приложения (с использованием JavaScript).
Рекомендации по разработке архитектуры ПО и его реализации аналогичны рекомендациям, приведённым в разделах 4.1 и 4.2 настоящих методических указаний.
Результатом выполнения лабораторной работы № 5 является отчёт, содержащий следующие разделы:
1. Список программных модулей.
2. Схема взаимодействия программных модулей.
Результатом выполнения лабораторной работы № 6 является готовый набор программных модулей, реализующих функции клиентской части приложения.
4.5 ЛР-7, ЛР-8: Моделирование и анализ процессов в готовом веб-
ориентированном приложении
Для выполнения данной части лабораторного практикума вам необходимо написать программный модуль, эмулирующий действия пользователей. Несколько копий такого модуля будут запущены на нескольких компьютерах в сети. Каждая копия модуля будет отправлять тестируемой
серверной приложения интенсивный поток как корректных, так и некорректных запросов. Это позволит проанализировать:
- общую производительность серверной части приложения;
- уровень требований серверной части приложения к системным ресурсам;
- способность серверной части приложения обрабатывать корректные запросы и отклонять некорректные;
- устойчивость серверной части приложения к некорректным входным данным.
Рассмотрим моделирование такого взаимодействия на примере предельно упрощённого ПО. Пусть серверная часть ПО выполняет авторизацию пользователей и (в случае успешной авторизации) выдаёт по запросу пользователя файлы, подсчитывая суммарное количество информации, переданной пользователю за час с целью ограничения объёма переданных данных.
Пример части кода программного модуля, выполняющего тестирование:
<?
// реализация функций опущена для краткости
for ($j=0;$j<100;$j++) {
$user_and_password=select_random_user();
/* функция возвращает массив из двух элементов
$user_and_password["user"] - имя пользователя
$user_and_password["password"] - пароль
имя пользователя случайным образом или выбирается из базы
пользователй (корректный пользователь) или генерируется
(некорректный пользователь)
для корректного пользователя случайным образом определяется,
использовать корректный или некорректный пароль */
$server_connection=connect_to_server_sed(" http://192.168.33.2/sedtest/index. php?user=".$user_and_password["user"]."&password=".$user_and_password[ "password"]);
write_our_log("CONNECT", $server_connection);
// записываем в локальный файл журнала ответ сервера
// если удалось подключиться к серверу if ($server_connection=="OK") {
for ($i=1;$i<100;$i++) {
$fname=random_file();
$fcontent=join(file(" http://192.168.33.2/ testsed/index.php?getfile=".$fname)); write_our_log("FILE", $fcontent); } } }?>
Реализацию механизма работы с сессиями на стороне тестирующего модуля и распознавание вариантов ответа сервера оставляем на вашу самостоятельную разработку.
Пример локального файла журнала:
01.01.2006, 17:23:45 - Попытка установить соединение: пользователь
[sjkdfgcjh], пароль [ui4tfcr3u4tvru2tu]: в соединении отказано
01.01.2006, 17:23:45 - Попытка установить соединение: пользователь [укае45],
пароль [45767878]: в соединении отказано
01.01.2006, 17:23:46 - Попытка установить соединение: пользователь [user1],
пароль [password1]: соединение установлено!
01.01.2006, 17:23:46 - запрос файла [eryvbretv.txt]: файл не найден
01.01.2006, 17:23:46 - запрос файла [dhby.txt]: файл не найден
01.01.2006, 17:23:47 - запрос файла [wcrbet.txt]: файл не найден
01.01.2006, 17:23:47 - запрос файла [ybn67nib.txt]: файл не найден
01.01.2006, 17:23:47 - запрос файла [111.txt]: файл найден, размер 125'856 байт,
файл получен
…
01.01.2006, 17:27:41 - запрос файла [qqq.txt]: файл найден, размер 25'435 байт,
превышен лимит объёма переданных данных
Формат и уровень детализации файлов журнала серверной части приложения и тестирующего модуля рекомендуется продумать самостоятельно. При проработке данного вопроса исходите из тех соображений, что сохраняемой информации должно хватить для полноценного понимания процесса взаимодействия тестирующего модуля и серверной части приложения. Хорошим решением данного вопроса принято считать возможность указания степени детализации файла журнала.
По результатам проведения тестирования заполните следующую таблицу (её можно дополнить необходимыми графами). Приведённая ниже таблица заполнена данными для наглядности восприятия.
Таблица 1 - анализ результатов тестиро в ания
ОценивалосьРезультат
Общая производительность приложения |
Низкая; часть клиентов теряет соединение по таймауту. {Подробный отчёт с указанием данных из
Уровень требований серверной части приложения к системным ресурсам
Устойчивость серверной части приложения к некорректным входным данным.
Способность серверной части
приложения обрабатывать
корректные запросы и отклонять некорректные.
журналов событий.}
Крайне высокий. В процессе
тестирования наблюдается резкое
снижение скорости работы
приложений на компьютере, на котором расположено тестируемое приложение. Высокая. Все тесты прошли успешно.
Высокая. Все тесты прошли успешно.
Дополнительные графы таблицы рекомендуется разработать самостоятельно на основе материала "Уязвимость веб-приложений".
Результатом выполнения лабораторных работ № 7 и 8 является отчёт, содержащий следующие разделы:
1. Описание механизма тестирования приложения.
2. Схема взаимодействия программных модулей ПО, разработанного для тестирования приложения.
3. Сводная таблица с описанием теста и его результатами.
4. Выводы относительно качества и надёжности разработанной вами приложения.
Варианты заданий для выполнения лабораторного практикума
1. Форум.
2. Интернет-магазин.
3. Сайт фирмы/организации/предприятия.
4. Информационно-новостной сайт.
5. Развлекательный сайт.
6. Сайт газеты/журнала.
7. Рекламный сайт.
8. Банерообменная система.
9. Сайт для автоматизированной агрегации новостей.
10. Обучающий интернет-ресурс.
Дата добавления: 2015-08-18; просмотров: 89 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Анализ БД через SQL-Injection | | | Конституционные правоотношения – это возникающие на основе норм конституционного права общественные связи, участники которых наделяются юридическими правами и несут обязанности |