Диплом: Разработка WEB-представительства студии корпусной мебели "ВК МЕБЕЛЬ"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
96
чревато – мы уже знаем) и выводимые пользователям в браузер данные (что
позволяет еще и XSS-атаку применить).
Кроме того, программное обеспечение должно быть в актуальном состоянии:
уязвимости находят каждый день в самых различных программных
компонентах – операционной системе, веб-серверах, серверах баз данных,
почтовых серверах и т.д., и даже если ваше приложение правильно написано
и тщательно проверяет все входящие данные, и вообще, хорошо защищено,
это не означает что в один прекрасный момент не найдется уязвимость в
вашей ОС или веб-сервере.
Незащищенность критичных данных (Sensitive Data Exposure)
Многие веб-приложения не защищают конфиденциальные данные, такие как
кредитные карты и учетные данные для аутентификации. Злоумышленники
могут украсть или модифицировать такие слабо защищенные данные для
использования в своих корыстных целях.
Самый простой пример – передача данных по протоколу HTTP. Дело в том,
что данные передаваемые по протоколу HTTP никак не шифруются, а при
прохождении данных от компьютера пользователя до Web-сервера, данные
пройдут достаточно много различных узлов: маршрутизатор офиса или
домашний роутер, маршрутизатор провайдера, маршрутизатор на канале,
маршрутизатор в дата-центре хостинг-провайдера сервера и так далее. На
каждом из этих узлов может затаиться зловред, так называемый сниффер,
программа, которая считывает весь трафик и передает злоумышленнику. А
последний просматривает полученные данные на предмет персональных
данных и данных кредитных карт.
Такие данные должны передаваться исключительно по протоколу HTTPS, о
чем должна гласить соответствующая надпись в адресной строке браузера:
https://site
Еще одна задача SSL-сертификата (а именно так называется специальный
ключ, при помощи которого осуществляется проверка подлинности и
97
шифрование в HTTPS) – подтвердить, что он выдан именно для данного
сайта.
Другой пример – отсутствие шифрования критичных данных, таких как
пароли или номера кредитных карт. В случае, если данные зашифрованы, то
даже в случае получения несанкционированного доступа на сервер,
злоумышленник не сможет украсть критичные данные. К паролям, в
частности, должна применяться необратимая хеш-функция – расшифровать
шифрограмму при этом невозможно, и проверка пароля происходит путем
формирования шифрограммы введенного пароля и сравнения ее с
имеющейся в базе.
Отсутствие функций контроля доступа (Missing Function Level Access
Control)
Суть уязвимости, как следует из названия, заключается в отсутствии
проверки наличия надлежащего доступа к запрашиваемому объекту.
Большинство веб-приложений проверяют права доступа, прежде чем
отобразить данные в пользовательском интерфейсе. Тем не менее,
приложения должны выполнять те же проверки контроля доступа на сервере
при запросе любой функции. Ведь есть еще множество вспомогательных
служебных запросов, которые, зачастую отправляются в фоновом режиме
асинхронно, при помощи технологии AJAX.
Если параметры запроса недостаточно тщательно проверяются,
злоумышленники смогут подделать запрос для доступа к данным без
надлежащего разрешения.
Частный, и, пожалуй, самый распространенный случай данной уязвимости
мы уже рассмотрели ранее – отсутствие проверки пользователя в личных
сообщениях.
Межсайтовая подделка запроса (Cross-Site Request Forgery, CSRF/XSRF)
Вектор атаки CSRF, также известный как XSRF, позволяет злоумышленнику
выполнять от имени жертвы действия на сервере, где не реализованы
дополнительные проверки.
98
Например, в некоторой платежной системе для перевода средств на другой
аккаунт, есть страница вида:
demobank.com/transfer_money.jsp?transfer_amount=1000&transfer_account=123
456789
где transfer_amount – сумма для перевода и transfer_account – номер аккаунта,
куда должны быть переведены средства.
Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно
отправляется запрос на вышеуказанную страницу платежной системы. Как
результат – деньги уйдут на счет злоумышленника, после чего, вероятно,
будут оперативно обменяны на Bitcoin или переведены в другую
безвозвратную платежную систему, и получить их назад уже не получится.
Предполагается, что жертва должна была предварительно пройти
аутентификацию в платежной системе и должна быть открыта активная
сессия (скажем, страница платежной системы открыта в другой вкладке
браузера).
Использование компонентов с известными уязвимостями (Using
Components with Known Vulnerabilities)
Зачастую веб-приложения написаны с использованием специальных
библиотек или «фреймворков» (англ – framework), которые поставляются
сторонними компаниями. В большинстве случаев эти компоненты имеют
открытый исходный код, а это означает, что они есть не только у вас, но и у
миллионов людей во всем мире, которые штудируют их исходный код, в том
числе, и на предмет уязвимостей. И нужно отметить, что делают они это
отнюдь не безуспешно.
Также уязвимости ищут (и находят) в более низкоуровневых компонентах
системы, таких как сервер базы данных, веб-сервер, и наконец, компоненты
операционной системы вплоть до ее ядра.
Очень важно использовать последние версии компонентов и следить за
появляющимися известными уязвимостями на сайтах типа securityfocus.com.
99
Непроверенные переадресации и пересылки (Unvalidated Redirects and
Forwards)
Веб-приложения зачастую переадресуют пользователя с одной страницы на
другую. В процессе могут использоваться ненадлежащим образом
проверяемые параметры с указанием страницы конечного назначения
переадресации.
Без соответствующих проверок, атакующий может использовать такие
страницы для переадресации жертвы на подложный сайт, который, к
примеру, может иметь очень схожий или неотличимый интерфейс, но
украдет ваши данные кредитной карты или другие критичные
конфиденциальные данные.
Этот вид уязвимостей, также, как и многие другие перечисленные выше,
является разновидностью ошибок проверки входящих данных (input
validation).
Если брать конкретную среду разработки веб-сайта, которая использовалась
для разработки сайта студии корпусной мебели, то стоит отметить, что в
Rails выявлено много серьезных проблем. Но это говорит в первую очередь о
росте фреймворка, а также о том, что Rails в процессе своего развития
заставляет обычных разработчиков задумываться о безопасности их кода.
Ruby on Rails, этот фреймворк прежде всего удобен для программиста.
Простота, эффективность и скорость разработки в Ruby on Rails сделала его
любимой платформой для разработки как в стартапах, так и в крупных
компаниях. RoR начал быстро набирать популярность c момента своего
появления, что связано с лаконичностью и «синтаксическим сахаром» Ruby.
Разработка прототипа при должной сноровке занимает считаные дни, и
переписывать заново его уже не придется. Это позволяет оперативно
представить результат клиенту, запустить проект, а потом, при
необходимости, легко найти новых разработчиков (разбираться в чужом, но
правильно написанном Rails Way коде очень легко).
100
Rails определенно не подходит для создания очередного SEO-решения
(сателлита, дорвея, сплога), как и для создания форума, личной странички
(хотя технически такая возможность, конечно, присутствует). Зато идеально
подходит для создания серьезных бизнес-проектов различного масштаба и
направленности, реализующих новые идеи и решения. Конечно, такие
проекты не могут не заинтересовать злоумышленников, что, в свою очередь,
и объясняет рост числа атак на RoR-приложения в последнее время.
Rails хорошо балансируют на грани между «удобно» и «безопасно» — не
стесняя действия разработчика, они предоставляют защиту от основных
уязвимостей из коробки. XSS, CSRF, SQL inject — рубисту просто не нужно
знать значения этих слов, ведь конвенция разработки грамотно решает эти
проблемы на корню.
Проведение большинства классических атак (таких как SQL injection, File
inclusion, XSS, CSRF) просто невозможно в RoR, или же защита от таких
уязвимостей уже включена в фреймворк по умолчанию. Поэтому для того,
чтобы провести атаку на RoR-проекты, необходимо эксплуатировать
специфические для RoR или самого языка Ruby уязвимости.
В блогосфере четко прослеживается усилившийся интерес к безопасности.
Многие начали писать книги с названиями типа Ruby Security, некоторые
создают онлайн-сканеры, остальные работают над brakeman (статический
анализатор кода для Rails). Также есть Security Monitor от создателя Code
Climate, который делает похожую работу, но «в облаке». Прогресс
определенно есть, и многие шутят, что если раньше рубисты были
«одержимы» тестированием, то сейчас это место заняла безопасность.
Резюмируя все изложенное, могу с уверенностью утверждать, что из всех
известных мне фреймворков, используемых для веб-разработки, Ruby on
Rails обеспечивает на данный момент самый высокий уровень безопасности
по умолчанию, не мешая при этом самому процессу разработки. В связи с
чем и был сделан выбор данного фреймворка для реализации текущего
проекта.
101
2.2 Информационное обеспечение задачи
2.2.1 Информационная модель и её описание
Справочные таблицы - содержат информацию справочного характера,
обладающих невысокой степенью изменчивости по сравнению с таблицами
БД других видов; как правило, находятся с операционными и
транзакционными ТБД в отношении "один-ко-многим", являясь при этом
родительскими таблицами.
Операционные таблицы - таблицы БД, в которых происходит устойчивое во
времени непрерывное или периодическое обновление, или добавление
информации. Операционные таблицы находятся, как правило, в подчиненном
отношении со справочными таблицами. Данные в операционных таблицах
служат источником для формирования данных в транзакционных таблицах.
На основании данных в операционных таблицах обычно формируются
итоговые отчеты.
Таблицы базы данных:
1. Справочные таблицы
Категории (category);
Пользователи (user);
Изображения основного слайдера (slider).
2. Операционные таблицы
Проекты (furniture);
Фотографии проектов (photo).
102
Рис. Информационная модель (схема)
103
2.2.2 Характеристика нормативно-справочной, входной и оперативной
информации
Описание справочной таблицы – категории (category).
Входной информацией для заполнения данной таблицы являлся анализ
наименования категорий общего перечня товаров.
Объем входной информации крайне небольшой, заполнялся лишь при
разработке сайта, на этапе заполнения информационного содержания сайта.
Перечень категорий задокументирован в техническом задании на разработку
веб-сайта студии корпусной мебели «ВК Мебель». Изменение информации
только по согласованию директора.
Описание справочной таблицы – пользователи (user).
Источник входной информации является техническое задание на разработку
веб-сайта. Перечень пользователей является согласованным. На данном
этапе, это учетные записи, лишь тех сотрудников, которым необходим
доступ к административной части сайта, а именно, директор, менеджер,
администратор информационной системы.
Заполнение таблицы производилось на этапе разработки.
Описание справочной таблицы – изображения основного слайдера (slider).
Источник входной информации является техническое задание на разработку
веб-сайта. Изображение, композиции товаров, реализованной компанией в
конечном варианте, интегрированный в интерьер клиентов.
Заполнение таблицы производилось на этапе разработки, в дальнейшем
возможно обновление информации в более частом порядке.
Описание операционной таблицы – проекты (furniture).
Входной информацией является текстовый документ, составленный по
окончанию реализации проектной работы, после согласования и подписания
всех необходимых документов.
В нем содержится информация по успешно сданному проекту, технически
характеристики, модель, цена, срок реализации проекта, наименовании
композиции или отдельного изделия, структура.
104
В большей степени информация заполняется менеджером, возможен вариант
директором лично или администратором системы. Частота актуализации
зависит от реализации проекта, среднестатистический показатель, это 3-4
проекта в месяц. Связующим элементом для заполнения данной таблицы
являются фотографии проекта.
Описание операционной таблицы – фотографии проектов (photo).
Входная информация в таблице является перечень, архив фотографий (медиа
файлов), результат работы фотографа. Объём информации возможен весьма
большой, в связи с тем, что пополнении коллекции фотографий проекта
возможен с самого начала реализации проекта, в процессе разработки,
сборки и до установки, а также окончательной установки мебели в интерьер
клиента. После чего возможна также, небольшая фотосессия продукта.
Частота актуализации зависит от реализации проекта.
2.2.3 Характеристика результатной информации
Результатная информация предназначена для целей структуризации и
обработки, построения системы, а также передается непосредственно
потребителям. Для лиц, которые анализируют информацию и принимают на
ее основании решения, важно, в каком виде эти данные выведены — форма
представления результатной информации.
Наиболее распространенной и удобной для пользователей формой вывода
результатов обработки является печать информации на страницах веб-
проекта в разнообразных документах, сводках, отчетах, таблицах, удобных
для восприятия человеком
Результатной информацией являются данные, которые хранятся в
соответствующих таблицах, в общей базе данных проекта (веб-сайта). Также
возможно визуально представление результатной информации. После
наполнения, какой-либо таблицы информацией, например, категории
товаров, информация является результатом обработки запросов и вывод из
105
базы данных на сайт, в соответствующие разделы проекта. Результирующая
информация также может быть результатом выполнения построения
структуризации элементов сайта, построения отдельных категорий мебели.
Характеристика результатной информации веб-сайта студии корпусной
мебели «ВК Мебель» имеет следующий вид.
На сайте расположена информация о компании. Клиенту предоставлена
информация, почему ему удобнее воспользоваться услугами именно этой
компании. Перечислен ряд преимуществ по реализации услуг компании.
Предоставлена удобочитаемая информация описания структуры сайта,
информация по каждому реализованному проекту, сроки, стоимости,
результаты работ в виде фотоотчетов.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран