Автор: Пользователь скрыл имя, 10 Января 2012 в 22:18, дипломная работа
Бурное развитие информационных технологий и совершенствование компьютерной техники привело к глобальной интеграции их во все сферы человеческой деятельности. Не является исключением и сфера торговли.
В настоящее время очень велико разнообразие товаров и услуг в Internet. Для того, что бы организовать рекламную компанию в Internet, фирме необходимо иметь Web-страницу, где потенциальные клиенты смогли бы ознакомиться с фирмой, и узнать чем она занимается, интересны ли им предложения данной фирмы, задать (через форму обратной связи) интересующие их вопросы и т.д.
Цель данной работы является создание Web-сайта для компании ОАО «Усмань-табак». Необходимостью создания сайта ОАО «Усмань-табак» является, прежде всего, реклама продукции и услуг, которые предлагает данное предприятие. Интерактивная реклама – новый способ предложить товары и услуги потребителю. Интернет же являет собой наиболее динамично развивающуюся среду вещания. За последние пять лет кол-во пользователей сети Internet в России выросло в десятки раз, и на сегодняшний момент достигло 571 миллионов человек.
}
При нажатии пользователем кнопки «Выход» (рис. 3.2), модуль получает от пользователя форму, с именем “action” и значением “exit”, производит завершение сеанса пользователя с очисткой cookies – процедура cookies_del и таблицы БД “Sessions” – процедура exit_session (см. листинг 3.8).
Листинг 3.8.
##############################
#
Удаляем Cookie
sub cookie_del(){
print "Set-Cookie:
$Session_id=; domain=$Domain_login; path=/;
}
##############################
#
Завершаем сессию
# exit_session($sid);
sub exit_session($){
my $id=esc_txt shift;
my $query="SELECT
user,addr,ctime,atime FROM Sessions WHERE id='$id'";
my $res=$::db->prepare($query);
$res->execute() or die "Error
$::DBI::err \"$::DBI::errstr\".";
my($user,$addr,$ctime,$atime)=
$res->finish();
if(defined($user)){
$::db->do(
or die "Error
$::DBI::err \"$::DBI::errstr\".";
$::db->do("UPDATE User SET laddr='$addr',
ltime=$atime,
stime=(stime+$atime-$ctime+10) WHERE user='$user'")
or die "Error
$::DBI::err \"$::DBI::errstr\".";
}
}
##############################
Во
время каждого обращения
Листинг 3.9.
$::db->do("DELETE FROM Sessions WHERE UNIX_TIMESTAMP()>etime");
Защита от брутфорса (метод «грубой силы» от англ. brute force) позволяет избежать подбора пароля по словарю или методом перебора. Идея защиты заключается в том, что пользователю дается определенное число попыток на ввод пароля. При каждом неправильном вводе пароля, в таблицах ‘IPBlock’ и ‘UserBlock’ нашей БД, срабатывает счетчик. При превышении счетчика заданного уровня (для каждой таблице свой), модуль авторизации перестает проверять соответствие паролей, выводя сообщение о блокировки. При этом значение блокировки логина пользователя должно стоять как минимум в 2,5 раза выше, чем блокировка по IP, т.е. атакуемый логин блокируется только тогда, когда “атака” идет с нескольких IP-адресов (к примеру, через анонимные proxy-серверы). Реализуется все относительно просто, добавляем проверку на блокировку перед авторизацией и увеличиваем счетчики блокировок если авторизация не удалась (см. листинг 3.10).
Листинг 3.10.
my $qBaddr="SELECT
etime,count,blocked,reason FROM IPBlock WHERE addr='$ENV{REMOTE_ADDR}'
AND UNIX_TIMESTAMP()<etime";
my $qBuser="SELECT
etime,count,blocked,reason FROM UserBlock WHERE user='$user' AND UNIX_TIMESTAMP()<etime";
my $res=$::db->prepare($qBaddr);
$res->execute() or die "Error
$::DBI::err \"$::DBI::errstr\".";
my($addr_etime,$addr_count,$
$res->execute() or die
my($user_etime,$user_count,$
$res->finish();
if(defined($addr_etime) && ($addr_count==
$addr_blocked=~s/\s+\[Bot\]$/<
if(wantarray){(
}else{
my $query="SELECT pass FROM User WHERE user='$user' AND
$res=$::db->prepare($query);
$res->execute() or die "Error
$::DBI::err \"$::DBI::errstr\".";
my($user_pass)=$res->fetchrow_
$res->finish();
if(defined($user_pass)){... Здесь код из
листинга 3.7 ...
my $val=
$val.="<br
/>Попытка взлома запротоколирована" if (defined($user_etime)
$user_count++;$addr_count++;
$query=
($UserBlock_timeout*60), $Logined_Bot [Bot]','Подбора пароля')";
$::db->do($query) or die "Error $::DBI::err
\"$::DBI::errstr\".";
block_log($user,'$Logined_Bot
[Bot]','Попытка
подбора пароля',
$UserBlock_timeout) if $user_count>=$UserBlock_count;
$query=
$addr_count,UNIX_TIMESTAMP()+(
'$Logined_Bot [Bot]','Попытка подбора пароля.')";
$::db->do($query) or die "Error $::DBI::err
\"$::DBI::errstr\".";
}
}
Полный листинг данного модуля можно посмотреть в листинге 2 приложения.
Мы можем расширить функционал сайта за счет модулей расширения, учитывая то, что система, при своей работе, предоставляет модулю подставить свои значения в хэшь %skin, модулю остается только подставить в данный хэшь сгенерированные данные и завершить свою работу.
В разработку уже мы уже включили два модуля расширения:
Рассмотрим возможность расширения функционала на основе работы модуля создания дерева сайта (см. листинг 3.11).
Листинг 3.11
#
Модуль карты сайта
package mod::search;
#
Формируем заголовок
по умолчанию
$::skinСоздание сайта для ОАО усмань табак='Карта
сайта';
$::skin{MENU}=&::menu($::
$::skin{CONTENT}="<ul><li><a
href=\"/\" title=\"$::pages->{0}->{title}
$::pages->{0}->{name}."</a>".&
"</li></ul>";
1;
Как видно из данного модуля все просто и легко. Для построения дерева сайта модуль использует процедуру main_menu(), представленной в листинге 3.5.
Любое техническое или программное решение предполагает вложение финансовых средств, отсюда возникает вопрос рационального их применения и выбора из многообразных способов решения задачи наиболее эффективного. Эффективность – широкое социально-экономическое понятие, предполагающее наличие положительных результатов, полезного эффекта, отдачи от всех средств, вложенных в разработку и внедрение проекта.
Существует несколько видов эффективности, среди которых обычно выделяют:
Экономическую
эффективность (как и другие виды
человеческой деятельности) в самом
общем виде принято определять как
отношение планируемых
Затраты на создание любого программного продукта или Web-сайта складываются из расходов по оплате труда разработчика программы и расходов по оплате машинного времени при отладке программы:
Зспп = Ззп + Змаш + Зобщ, (4.1)
где Зспп – затраты на создание программного продукта;
Ззп – затраты на оплату труда разработчика программы;
Змаш – затраты на оплату машинного времени;
Зобщ – общие затраты.
Расходы на оплату труда разработчика сайта определяются путем умножения трудоёмкости создания сайта на среднечасовую оплату разработчика (с учётом коэффициента отчислений на социальные нужды):
Ззп = t × Tчас (4.2)
где t – трудоемкость создания сайта;
Тчас – среднечасовая оплата труда разработчика.
Трудоёмкость разработки программного продукта можно определить следующим образом:
t = tоп + tконц + tдиз + tстр+ tпрог + tинф + tотл (4.3)
где tоп – затраты труда на подготовку описания задачи;
tконц – затраты труда на поиск концептуальных решений сайта;
tдиз – затраты труда на разработку элементов дизайна сайта;
tстр – затраты труда на разработку структуры сайта и каркаса сайта;
tпрог – затраты труда на составление HTML-кода и Java-кода сайта;
tинф – затраты труда на информационное наполнение сайта;
tотл – затраты труда на отладку и тестирование сайта.
Составляющие затрат, в свою очередь можно вычислить через условное число операторов Q по формуле: