Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Особенности алгоритмизации при разработке WEB-приложений (Основные этапы web разработки)

Содержание:

Основные этапы разработки web-приложений

Разработка web-приложения (web-разработка) — это комплекс мер и действий по планированию и созданию сайта в сети Internet в зависимости от поставленных целей и задач.

Современный Internet-сайт может решать, как маркетинговые задачи — продвигать на рынке товары и услуги предприятия, конкурентные преимущества компании, увеличивать спрос на продукцию и пр. — так и представлять собой информационный ресурс, задачи которого ограничиваются информированием целевой аудитории.

Непосредственно созданию сайта предшествует подробный комплексный анализ, определяющий критерии, которым должен соответствовать будущий web-проект.

Процесс создания web-приложения, в общем случае, включает шесть основных этапов:

· определение целей и задач проекта;

· разработка структуры сайта;

· разработка дизайн-макетов;

· html-вёрстка;

· программирование и контроль качества;

· запуск и сопровождение, SEO-оптимизация.

Каждый из перечисленных этапов в достаточной степени независим, что позволяет выбирать схему работы и исполнителя для каждого из них

Явная причина распространения информационных технологий появление глобальной сети интернет, они уже настолько прочно вошли в нашу жизнь, что публикация информации в WWW стала нормой. Поэтому организация взаимодействия информационной системы с web-сервером. Под информационной системой обычно понимается комплекс программ ориентированный набор, хранение, поиски обработку текстовой и/или фактографической информации. Подавляющее большинство информационных систем работает в режиме диалога с пользователем. Преимуществом данного подхода можно назвать: - отсутствие дублирования кода программы-сервера программам и-клиентами; - так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент так как все вычисления выполняются на сервере, то требования компьютерам, на которых установлен клиент, минимальны; - все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. Однако в данном подходе имеется существенный недостаток: при выходе из строя сервера, вся вычислительная сеть становится неработоспособной. В данной работе такой подход является оптимальным, т.к. имеется возможность обслуживать множественные запросы и возможность хранить большой объем данных. Актуальность данной работы заключается в том, что в сети Internet имеется множество информационных ресурсов данной тематики, однако большинство из них не соответствуют необходимым критериям пользователей, всвязисэтимнеобходимостьсозданияудобногоипростоговиспользованииинформационногоресурсаостаетсяактуальной. Целью является разработка web-приложения, которое будет удолетворять потребности потребителя. И для этого будет использоваться JavaScript, PHP и СУБД MySQL. Исходя из цели, были поставлены следующие задачи:

- анализ предметной области;

- построение логической и физической моделей БД;

- реализация спроектированной БД;

- проектирование и разработка web-приложения

Фреймфорки для разработки веб-приложения

Фреймворк (framework) —это программная оболочка, позволяющая упростить и ускорить решение типовых задач, характерных для данного языка программирования. Само слово framework означает «каркас» в переводе с английского. Действительно, фреймворки и призваны быть готовыми каркасами программ, на которые только и остаётся навесить стены и окна .

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

Еще один из плюсов –структурирование архитектуры вашего приложения.

Vaadin

Maven (мавен) —это инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации.

Преимущества Maven:

1)Независимость от OS. Сборка проекта происходит в любой операционной системе. Файл проекта один и тот же.

2)Управление зависимостями. Редко какие проекты пишутся без использования сторонних библиотек (зависимостей). Эти сторонние библиотеки зачастую тоже в свою очередь используют библиотеки разных версий. Мавен позволяет управлять такими сложными зависимостями. Что позволяет разрешать конфликты версий и в случае необходимости легко переходить на новые версии библиотек.

3)Возможна сборка из командной строки. Такое часто необходимо для автоматической сборки проекта на сервере (Continuous Integration).

4)Хорошая интеграция с средами разработки. Основные среды разработки на java легко открывают проекты которые собираются c помощью maven. При этом зачастую проект настраивать не нужно -он сразу готов к дальнейшей разработке. Как следствие -если с проектом работают в разных средах разработки, то maven удобный способ хранения настроек. Настроечный файл среды разработки и для сборки один и тот же -меньше дублирования данных и соответственно ошибок

5)Декларативное описание проекта.

Spring Framework

Spring Framework (или коротко Spring) —универсальный фреймворк с открытым исходным кодом для Java-платформы.SpringJava-разработчикам в проектировании; кроме того, он предоставляет хорошо документированные и лёгкие в использовании средства решения проблем, возникающих при создании приложений корпоративного масштаба.Между тем, особенности ядра Spring применимы в любом Java-приложении, и существует множество расширений и усовершенствований для построения веб-приложений на Java Enterprise платформе. По этим причинам Spring приобрёл большую популярность и признаётся разработчиками как стратегически важный фреймворк.Одним из компонентов фреймворка является Spring Security, который представляет из себя инструмент, предоставляющий механизмы построения систем аутентификации и авторизации, а также другие возможности обеспечения безопасности для корпоративных приложений, созданных с помощью Spring Framework.

Определение целей и задач проекта

На этапе проектирования формулируются бизнес-цели создаваемого проекта, определяются требования, которым он должен удовлетворять, разрабатывается общая концепция.

На данном этапе имеет смысл уточнить пожелания заказчика, а также произвести исследование целевой аудитории. Для более глубокого анализа можно запросить у заказчика соответствующие материалы: брошюры, ежегодные отчёты, образцы продукции, другие сопутствующие данные — всё, что поможет составить представление о том, кто и с какой целью будет посещать сайт, какие задачи будут выполняться на сайте. Немаловажно выяснить технические возможности будущей основной пользовательской аудитории — пропускную способность каналов связи, используемые Internet-браузеры и пр.

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

Когда цели определены, приступают к составлению расширенного плана проекта, отражающего сколько времени, денег и иных средств понадобится для выполнения работ на каждом из последующих этапов. Такой план часто содержит информацию о бюджете проекта, график работ (с соответствующим распределением ролей между web-разработчиками), техническую документацию, а также раздел «деталей и уточнений», где оговорены конкретные аспекты возможных спорных вопросов. В этот раздел также включают предложения о готовых разработках и шаблонах.

После детального рассмотрения и утверждения плана подписывается договор о выполнении работ.

Задача БД при создании веб-приложения

Согласно классическому определению, база данных —это упорядоченная совокупность информации, хранящейся в виде множеств, каждое из которых содержит записи унифицированного вида. Системы управления базами данных (СУБД) предоставляют программисту мощнейший инструментарий для создания, обновления и обработки больших объемов информации, имеющей сложную структуру. В классической теории выделяют три типа, три структуры баз данных: иерархическую, сетевую и реляционную. В настоящее время доминирующее положение занимают реляционные базы данных. Лидером среди баз данных, применяемых для разработки WEB-приложений, на сегодняшний день, безусловно, является MySQL. Главное достоинство MySQL (плавно переходящее в недостаток:) -ее простота. Как следствие -высочайшая скорость выполнения SQL-запросов и необходимость явного программирования основных правил поддержания целостности и непротиворечивости данных на уровне сервера приложений.

Среди других баз данных, применяемых для WEB-разработок, отметим Oracle и PostgreSQL. PostgreSQL -свободно распространяемая СУБД с открытым исходным кодом, ориентированная главным образом на работу в UNIX-подобных системах.

Функционирование БД обеспечивается совокупностью языковых и программных средств, называемых системой управления базами данных (СУБД).

Основная задача СУБД – предоставить пользователю БД возможность работать с ней, не вникая в детали на уровне аппаратного обеспечения. Иными словами, СУБД позволяет конечному пользователю рассматривать БД как объект более высокого уровня по сравнению с аппаратным обеспечением, а также предоставляет в его распоряжение набор операций, выраженный в терминах языка манипулирования данными высокого уровня (например, набор операций, которые можно выполнять с помощью языка SQL).

Сложные управляемые данными web-приложения по ряду причин используют СУБД. Во-первых, с помощью SQL web-программист может переложить большинство задач хранения и управления данными на СУБД. Во-вторых, СУБД лучше человека справляются с управлением большими объемами данных. В-третьих, БД хранят данные постоянно, в то время, как переменные и их данные в сценариях PHP обычно существуют лишь на протяжении запроса данной страницы. Благодаря этому постоянству СУБД могут принимать более разумные решения по поводу того, что относится к производительности работы с диском и кэшированию памяти.

Хранение информации в БД также позволяет разработчику PHP писать меньший объем кода (благодаря тому, что задачи обработки данных передаются СУБД) и рассматривать отвлеченно всю систему управления данными.

СУБД обычно дают следующие преимущества:

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

Разработка структуры сайта

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

Карту сайта представляют в виде чертежа (блок-схемы), на котором каждая страница отображается отдельным прямоугольником. Связи между ними показывают схему переходов по страницам.

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

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

Завершив формирование облика сайта, компоновку страниц и определив размещение содержимого, переходят к следующему этапу web-разработки — к визуальному оформлению.

Разработка дизайн-макетов

Дизайн-макет — это графическое, наглядное изображение основных элементов сайта. Дизайн-макет полностью воплощает визуальную концепцию сайта. Его разработка выполняется в одной из графических программ (в подавляющем большинстве случаев — в Adobe Photoshop). В процессе разработки дизайнер руководствуется письменным соглашением (брифом) на создание дизайн-макета, который заполняется заказчиком и содержит пожелания к дизайну: тип, предпочтительные цвета, наличие тех или иных графических элементов и пр.

На этой стадии создаются все элементы web-дизайна в соответствии со стилем подачи информации и общей концепцией. Главным при дизайне сайта является умение разработать графические объекты, которые бы быстро загружались и хорошо смотрелись, независимо от используемого Internet-браузера.

Часто прибегают к использованию готовых дизайн-шаблонов, которые широко представлены в сети Internet или являются встроенными в различные графические редакторы, такие как, Microsoft FrontPage или Adobe PhotoShop. С помощью подобных шаблонов сайт создаётся за максимально сжатое время. Однако следует отметить, что у такого решения имеется ряд существенных недостатков, главный из которых — повторяемость и не уникальность дизайна. Шаблон является оболочкой с минимальным количеством интерактивных элементов и полезных модулей. Поэтому при выборе шаблона стоит обращать внимание не только на дизайн, но и на функциональность.

Важным элементом web-дизайна является графика, которую условно можно разделить на три категории:

· иллюстрированная графика — пояснительные изображения, схемы и чертежи, фотографии;

· функциональная графика — кнопки навигации, счётчики и другие элементы управления сайтом;

· декоративная графика — эстетические элементы дизайна страниц — фоновый рисунок, заголовки, выполненные в виде графических файлов и пр.

Такая классификация предполагает использование различных мультимедийных форматов. Например, для чётких, контрастных изображений с мелкими деталями и тонкими линями используются jpeg-файлы, а для красочных изображений с мягкими переходами цветов — gif-файлы.

Html-вёрстка

Html-вёрстка макета является следующим шагом после разработки дизайна сайта. Вёрстка — это преобразование созданных дизайнером графических макетов страниц в html-код, который бы отображался в Internet-браузере в точном соответствии с исходным макетом. Сложность вёрстки зависит от сложности дизайна.

Основными задачами при вёрстке являются:

· корректность отображения страниц сайта при разных разрешениях экрана;

· кросбраузерность — единообразность отображения страниц сайта в наиболее популярных браузерах — Internet Explorer, Mozilla Firefox, Opera, Chrome.

Программирование и контроль качества

Программирование — это практическая реализация проекта, интеграция наработок по отдельным направлениям. Другими словами, это процесс построения функциональных инструментов для наполнения и обработки данных. Программирование определяет насколько стабильным и защищённым будет функционирование сайта. Выбор платформы, технологий и грамотного подхода к программированию играет существенную роль. На данном этапе важно определиться с подходом к созданию Internet-реусурса: будет ли он статическим или динамическим.

Статический Internet-сайт представляет собой совокупность html-файлов, каждый из которых представляет отдельную страницу (или её часть). Такой подход используется, в основном, для размещения файловых архивов и медиа-коллекций. Статические сайты программирования, как такового, не требуют.

Страницы динамического Internet-сайт формируются сервером в ответ на запрос пользователя (передаваемый в виде URL-адреса страницы). Такие сайты требуют больше затрат на разработку и техническую поддержку, чем статические, но эти затраты окупаются за счёт снижения финансирования на редактирование материалов и развитие информационной структуры.

Методики вёрстки сайтов

  1. Вёрстка обязательно должна быть кроссбраузерной для Firefox, Opera, Safari, Google Chrome и Internet Explorer, который в последнее время теряет актуальность. Сайт должен быть протестирован на разных разрешениях монитора, начиная от 1024 на 768;
  2. Вёрстка абсолютно всех страниц сайта должна пройти валидацию. Использование различных CMS, модулей и готовых скриптов, вставка на интернет-ресурс содержимого разных форматов зачастую затрудняют достижение валидности;
  3. Внешний вид свёрстанной страницы должен по максимуму соответствовать дизайну: размеры шрифтов, расстояния между строками, отступы должны соответствовать параметрам psd макета. Достичь пиксельной точности зачастую затруднительно, поэтому допускается отклонение отдельных элементов в пределах 3-6 пикселей;
  4. CSS стили должны быть вынесены в отдельный документ. В HTML коде допустимо только присутствие идентификаторов и классов;
  5. Логотип веб-сайта должен являться ссылкой на главную страницу;
  6. HTML страницы должны содержать комментарии к основным элементам, таким, как меню, заголовок, шапка, контент, футер и т.п.
  7. Имена идентификаторов и классов должны соответствовать назначению и быть понятными интуитивно (menu, footer, header и т.д.);
  8. В таблицах стилей настоятельно рекомендуется использовать одинаковые единицы измерения для всех величин;
  9. Надписи на кнопках должны быть написаны на одном языке и либо прописными буквами, либо начинаться с заглавной;
  10. Кнопки должны иметь стандартное оформление и быть либо графическими элементами, либо быть настроенными с помощью таблиц стилей;
  11. HTML и CSS код должен быть минимизирован. Следует избегать лишних классов и идентификаторов и использовать свойства наследования;
  12. Заголовки должны быть написаны исключительно с помощью специальных тегов h1, h2 и т.д;
  13. Атрибуты всех тегов должны быть заключены в кавычки.

Основные подходы к верстке сайта

Предположим, что существуют два блока, стоящих рядом. Существует несколько основных подходов к вёрстке сайта:

  • Фиксированная верстка. При изменении размера окна браузера блоки не поменяют свою ширину, а на мониторах с низким разрешением экрана появится полоса прокрутки;
  • Резиновая верстка. В зависимости от размера окна браузера, блоки изменят свою ширину;
  • Адаптивная верстка. Воплощается в жизнь благодаря различным скриптам и заточена под определённые разрешения (320, 768, 1024 и т.д.). Изменение размера происходит рывками после того, как определённый уровень достигнут;
  • Отзывчивая верстка. Представляет собой слияние адаптивной и резиновой верстки. Является самой сложной с технической точки зрения, но в то же время самой эффективной;
  • Версия сайта для мобильных устройств. Фактически является созданием другого сайта с другим дизайном, версткой и URL адресом.

Кроме подходов, существуют ещё и различные типы вёрстки.

CMS

Как правило, современные web-проекты включают подсистему управления контентом (содержимым) — CMS (content management system), либо строятся на основе неё. Назначение системы управления контентом состоит в предоставлении возможности публиковать материалы на сайте человеку, не обладающему специальными знаниями в области создания html-документов, а также в существенном сокращении времени, затрачиваемом на ввод данных.

Такие системы делают возможным совместную работу по наполнению ресурса информацией, позволяют обновлять содержимое страниц и разделов, размещать на сайте текстовую и графическую информацию, вносить изменения, перемещать или удалять информационные блоки или целые страницы, снижают риск непреднамеренного повреждения программного кода. Управление контентом включает в себя также отслеживание актуальности опубликованной информации, её соответствия критериям SEO-оптимизации и пр.

Существует большое разнообразие системы управления контентом: от систем, создаваемых в рамках реализации конкретного проекта для решения специфических задач, до универсальных систем, таких как WordPress, Joomla, 1С-Битрикс и пр.

Инструментальные средства разработки и базы данных

В настоящее время актуальным программным функционалом среди множества сред разработки обладает высокоуровневый фреймворк Ruby on Rails. Его возможности позволяют существенно повысить продуктивность web-программирования по сравнению с такими технологиями, как PHP или Perl.

Язык Ruby, лежащий в основе фреймворка Ruby on Rails, имеет быстрый цикл разработки (редактирование – запуск – редактирование), реализован в виде интерпретатора, поддерживает нетипизированные переменные, не требующие объявления. Ruby on Rails позволяет добиться высокой надёжности и гибкости разработки проектов любого масштаба. Фреймворк включает подсистему тестирования, которая помогает существенно сэкономить время разработки и повысить качество web-проекта.

основе большинства динамических web-проектов лежит база данных. Существует множество различных систем управления базами данных (СУБД), но в современных хостинг-центрах — организациях по размещению web-проектов на серверах — как правило, применяются СУБД MySQL и PostgreSQL. Причинами тому являются фактическая ориентация этих СУБД на хостинговые задачи, доступность на всех популярных серверных операционных системах, а также относительная простота настройки и администрирования. СУБД упрощает управление данными и сокращает время и издержки на разработку и развёртывание приложений. MySQL и PostgreSQL обеспечивают приемлемый уровень безопасности, надёжности и масштабируемости.

Системы поддержки процесса разработки

Создание web-приложения, как и любого другого программного продукта, подразумевает работу с постоянно меняющейся информацией, данными, файлами. Контроль за вносимыми в проект изменениями помогают обеспечить системы управления версиями (Version Control System — VCS), которые хранят предыдущие версии исходных файлов проекта, отслеживают производимые в файлах изменения, обеспечивают совместную командную работу над проектом и пр. К наиболее популярным на текущий момент VCS относятся: SVN, GIT, Microsoft VSS. Использование системы контроля версий поднимает общий уровень качества разработки.

Кроме того, создание любого программного продукта (в том числе и web-приложения) сопровождается новыми требованиями к продукту, предложениями по его улучшению, необходимостью исправлять ошибки и пр. Для управления перечисленными аспектами разработки и улучшения качества менеджмента используются системы отслеживания ошибок (Bug Tracking System — BTS). Главный компонент BTS представляет собой базу данных с удаленным доступом, обеспечивающую централизованный доступ ко всем необходимым файлам, спецификациям, графикам, планам, замечаниям и т.п.

Существует широкое разнообразие систем отслеживания ошибок: Basecamp, Bugzilla, Trac, MantisBT, Redmine и пр.

По завершении этапа активного программирования начинается этап тестирования корректности функционирования созданного web-приложения: проверки на наличие грамматических ошибок, пропущенных картинок, неработающих ссылок и т.д., а также проверки функционирования сайта в различных web-браузерах. Данный этап может быть автоматизирован с помощью средств автоматического тестирования таких, как IBM Rational AppScan, Empirix E-TEST Suite, XSpider, WAS и др.

Запуск и сопровождение

После исправления ошибок и презентации сайта в сети Internet, начинается новый этап работ, связанный с его сопровождением. Основная цель сопровождения — поддержание стабильности работы web-ресурса и актуальности информации. Обязательным условием квалифицированного сопровождения web-сайта является защита информации, включающая в себя антивирусную защиту и защиту баз данных на сервере от действий злоумышленников, в частности, от SQL injection.

Кроме того, необходимо своевременное обновление содержимого сайта, исправление ошибок, не выявленных или не исправленных на стадии проверки качества. Ещё одним важным моментом сопровождения является постоянный мониторинг эффективной работоспособности сайта, контроль посещаемости и учёт данных статистики.

SEO-оптимизация

Поисковая оптимизация (Search Engine Optimization) — это комплекс мероприятий, целью которых является увеличение посещаемости Internet-ресурса за счет достижения им высоких позиций в выдаче поисковых систем по заданному набору целевых запросов. SEO-оптимизация базируется на семантическом ядре — списке ключевых слов, по которым планируется продвижение сайта в поисковых системах. Ключевые слова группируются по высоко-, средне- и низкочастотным запросам. От правильности подбора данных слов напрямую зависит успех сайта.

SEO-оптимизация учитывает:

· внутренние факторы ранжирования: число, плотность и расположение ключевых слов на страницах сайта, стилистическое оформление текста, правильность формирования тегов, мета-тегов и т. д.;

· внешние факторы ранжирования: индекс цитируемости, содержание внешних ссылок, релевантность ссылающихся страниц и пр.

Современные системы web-поиска (поисковые машины) анализируют большинство элементов web-страниц: текст, заголовки, служебные html-теги, стилевые и структурные особенности содержания. Результаты работы SEO-роботов сохраняются в специальной базе данных — индексе поисковой системы, — из которой по запросу пользователя выдаются в определенном порядке. Специалисты, чьей профессиональной областью деятельности является SEO-оптимизация, постоянно изучают алгоритмы ранжирования поисковых машин.

Безопасность WEB приложений

Penetration testing (он же - пентест) - тестирование на проникновение. Выражаясь "более простыми" для нас словами, пентест - способ тестирования уязвимостей в области кибербезопасности какой-либо организации, предприятия или компании, будь-то частной или государственной. Тестирование на проникновение (в некоторых случаях - тестирование пера) позволяет специалистам в области кибербезопасности (в данном случае - пентестерам) выявить уязвимые и слабые места в системе безопасности, которые может использовать злоумышленник, как на виртуальном уровне, так и на физическом. Если бы хакеры собирались совершить атаку на Вашу систему безопасности: как они это сделают и получиться ли у них? Тестирование на проникновение не заканчивается просто на обнаружении способов, с помощью которых потенциальный кибермошенник может получить несанкционированный доступ к конфиденциальной информации или захватить полный контроль над системой. Пентестеры имитируют реальную атаку, просматривая сеть, сайт, приложения, устройства, возможность физического доступа, что бы определить, как будет работать механизм защиты. Они выполняют оценку не только с точки зрения хакера, но и эксперта в области кибербезопасности, что позволяет проанализировать соответствие политики кибербезопасности организации и осведомленности ее сотрудников об угрозах, например, со стороны социальной инженерии. В то же время определяют способность предприятия выявлять и своевременно реагировать на подобные инциденты. Для общего представления можно привести пример с банком, который нанимает специального человека, делает из него "грабителя" и отправляет в отделение, с целью получить доступ к хранилищу. Если этот человек сумеет попасть в хранилище, то служба безопасности получит не только выговор, но и ценную информацию о том, как можно улучшить систему защиты и какие аспекты требуют более детального рассмотрения. Кто-то может сказать, что лучшим кандидатом будет сотрудник службы безопасности организации, который знает систему изнутри, ее слабые и сильные стороны, однако не все так однозначно. Если тест на проникновение будет проводить специалист с минимальным уровнем знаний о построенной системе защиты он с большей вероятностью найдет, так называемые, "слепые пятна", пропущенные разработчиками при построении и организации уровней защиты. Именно по этой причине, для проведения пентеста обычно заказывают услуги сторонних подрядчиков специализирующихся в данной сфере. На эту роль также подойдут хакеры, "этические" хакеры (так же называемые, как "белая шляпа"). Эти ребята имеют большой опыт, который применяют в благих намерениях, с целью, повышения безопасности. Лучшего кандидата не найти, поскольку все осуществляется индивидуально, все зависит от стратегии и вида пентеста, который желают выполнить представители организации.

Что включает в себя пентест

  • Тест на проникновение в сеть:
  1. выявлении уязвимостей сетевого и системного уровня;
  2. определение неправильных конфигураций и настроек;
  3. выявление уязвимости беспроводной сети;
  4. мошеннические услуги;
  5. отсутствие надежных паролей и наличие слабых протоколов.
  • Тест на проникновение приложений:
  1. выявление недостатков прикладного уровня;
  2. подделка запросов;
  3. применение злонамеренных скриптов;
  4. нарушение работы управления сеансами;
  5. и т.п.
  • Тест на физическое проникновение:
  1. взлом физических барьеров;
  2. проверка и взлом замков;
  3. нарушения работы и обход датчиков;
  4. вывод из строя камер видеонаблюдения;
  5. и т.д.
  • Тестирование на проникновение устройств (IoT):
  1. выявление аппаратных и программных недостатков устройств;
  2. брутфорс слабых паролей;
  3. определение небезопасных протоколов, API и каналов связи;
  4. нарушение в конфигурации и многое другое.

Какие существуют виды пентестов

  • Пентест "белый ящик" - в данном испытании на проникновении пентестеру будет предоставлена некоторая информация о реализованной структуре безопасности организации. Так же, этот метод может быть реализован совместно с ИТ-командой организации и командой тестирования на проникновение;
  • Пентест "черный ящик" (или же - "слепой тест") - в этом случае, имитируется действия реального злоумышленника, поскольку специалисту или команде, не предоставляют никакой существенной информации, кроме названия и базовых данных для общего представления о работе компании;
  • Скрытый пентест (также известный, как "двойной слепой") - в этой ситуации, о существовании тестирования пера может знать лишь малая часть сотрудников организации (1-2 человека), в том числе ИТ-специалисты и специалисты по безопасности, которые будут реагировать на атаки не обладают информацией о существующей проверке. Для такого вида тестов, очень важно пентестеру или команде иметь соответствующий документ, что бы избежать проблем с правоохранительными органами, в случае должного реагирования со стороны службы безопасности;
  • Внешний пентест - атака "этическим" хакером, которая осуществляется против внешних серверов или устройств организации, такие, как их веб-сайт и сетевые серверы. Цель состоит в том, чтобы определить, может ли злоумышленник проникнуть в систему дистанционно и как далеко, если все-таки может;
  • Внутренний пентест - имитация атаки осуществляется авторизованным пользователем со стандартными правами доступа, что позволяет определить, какой ущерб может нанести сотрудник, имеющий какие-то личные счеты по отношению к руководству.

Этапы проведения пентеста

  1. Сбор информации - поиск данных об организации и сотрудниках в открытых источниках, социальных сетях, на форумах и блогах;
  2. Поиск технической базы - определение существующих ресурсов, приложений и технических средств на предприятие;
  3. Анализ уязвимостей и угроз - обнаружение уязвимостей в системах безопасности и приложениях с применением набора инструментов и утилит, как коммерческих, так и разработанных непосредственно в компании пентестеров;
  4. Эксплуатация и обработка данных - имитация реальной кибератаки для получения сведений о любых уязвимостях с дальнейшим анализированием;
  5. Формирование отчета - оформление и презентация выводов выполненного пентеста с предложениями по улучшению существующей системы безопасности.

Зачем требуется проводить пентест

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

Список использованной литературы

  1. Агальцов, В.П. Базы данных. В 2-х т. Т. 2. Распределенные и удаленные базы данных: Учебник / В.П. Агальцов. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 272 c.
  2. Аткинсон Л. MySQL. Библиотека профессионала - СПб: Вильямс, 2014. - 624 c.
  3. Бен-Ган И., Microsoft SQL Server 2008. Основы T-SQL. - СПб:БХВ-Петербург, 2011. - 432с.
  4. Бритов Г., Осипова Т. Моделирование бизнес-процессов. - М.:LAP, 2014. – 124 с.
  5. Виейра Р.Программирование баз данных Microsoft SQL Server 2008. Базовый курс / Р. Виейра - Диалектика М., 2011. - 812 с.
  6. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. - СПб.:Питер, 2015. – 368 с.
  7. Голицына, О.Л. Базы данных: Учебное пособие / О.Л. Голицына, Н.В. Максимов, И.И. Попов. - М.: Форум, 2012. - 400 c.
  8. Грофф Д., Вайнберг П., Оппель Э. SQL. Полное руководство. - СПб.: Вильямс, 2014. - 960с.
  9. Гудсон Д., Стюард Р. Практическое руководство по доступу к данным. - СПб.:БХВ-Петербург, 2013. – 304 с.
  10. Гурвиц Г. Microsoft Access 2010. Разработка приложений на реальном примере. - СПб.: БХВ-Петербург, 2010. - 497с.
  11. Давыдова Е. М. Базы данных Учеб. пособие для вузов / Е. М. Давыдова, Н. А. Новгородова. - 3-е изд., перераб. и доп. - Томск : В-Спектр, 2012. - 128 с.
  12. Дейт К.Дж. Введение в системы баз данных. - К.: Диалектика, 2012. - 360 c.
  13. Дунаев В.В. Базы данных. Язык SQL для студента – Издательство: БХВ, 2013. - 196 с.
  14. Дюваль Поль М. Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска - СПб: Вильямс, 2013. - 497 c.
  15. Илюшечкин В. Основы использования и проектирования баз данных. Учебник. - М.:Юрайт, 2014. - 214с.
  16. Исаев Г. Проектирование информационных систем. Учебное пособие. - М.: Омега-Л, 2015. - 432с.
  17. Карпова, И.П. Базы данных: Учебное пособие / И.П. Карпова. - СПб.: Питер, 2013. - 240 c.
  18. Кириллов, В.В. Введение в реляционные базы данных.Введение в реляционные базы данных / В.В. Кириллов, Г.Ю. Громов. - СПб.: БХВ-Петербург, 2012. - 464 c.
  19. Кит Т. Томпсон Автоматизация продаж. Умный подход. - М.: Вершина, 2016 - 272 с.
  20. Коваленко В. Проектирование информационных систем. - М.: Форум, 2012. - 320с.
  21. Кузин, А.В. Базы данных: Учебное пособие для студ. высш. учеб. заведений / А.В. Кузин, С.В. Левонисова. - М.: ИЦ Академия, 2012. - 320 c.
  22. Кузнецов С. Базы данных. - М.: Academia, 2012. - 496с.
  23. Лычкина Н. Имитационное моделирование экономических процессов. - М.:Инфра-М, 2012. - 256с.
  24. Малыхина М. Базы данных. Основы, проектирование, использование. - СПб.: БХВ-Петербург, 2012. - 528с.
  25. Марков А.С., Лисовский К.Ю. Базы данных. Введение в теорию и методологию: Учебник. – М.: Финансы и статистика, 2015. – 512 с.
  26. Миков А. Информационные процессы и нормативные системы в IT. Математические модели. Проблемы проектирования. Новые подходы. - М.: Либроком, 2013. - 256с.
  27. Набатов Д. Правовая защита баз данных и прав ее создателей по законодательству РФ. - М.:LAP, 2014. - 72с.
  28. Наумов А.Н., Вендров А.М., Иванов В.К. и др. Системы управления базами данных и знаний - М.: Финансы и статистика, 2014. - 352 c.
  29. Озкарахан Э. Машины баз данных и управление базами данных. - М.: Мир, 2013. - 551 c.
  30. Пирогов, В.Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-Петербург, 2014. - 528 c.
  31. Редько В.Н., Бассараб И.А. Базы данных и информационные системы. - М.: Знание, 2015. - 602 c.
  32. Степанов В. Информационные технологии управления продажами и маркетингом. - М.: LAP Lambert Academic Publishing, 2013. - 284 с.
  33. Советов, Б.Я. Базы данных: теория и практика: Учебник для бакалавров / Б.Я. Советов, В.В. Цехановский, В.Д. Чертовской. - М.: Юрайт, 2013. - 463 c.
  34. Тоу Дэн Настройка SQL - СПб: Питер, 2013. - 539 c.
  35. Туманов В.Е. Основы проектирования реляционных баз данных - М.: Бином, 2012. - 420 c.
  36. Уорден К. Новые интеллектуальные материалы и конструкции. Свойства и применение; М.: Техносфера, 2012. - 456 c.
  37. Уткин В., Балдин К. Информационные системы в экономике. - М.: Academia, 2012. - 288с.
  38. Фейерштейн С., Прибыл Б. Oracle PL/SQL для профессионалов - СПб: Питер, 2012. - 540 c.
  39. Фуфаев, Э.В. Базы данных: Учебное пособие для студентов учреждений среднего профессионального образования / Э.В. Фуфаев, Д.Э. Фуфаев. - М.: ИЦ Академия, 2012. - 320 c.
  40. Хаббард Дж. Автоматизированное проектирование баз данных - М.: Мир, 2014. - 453 c.
  41. Шаймарданов Р.Б. Моделирование и автоматизация проектирования структур баз данных - М.: Юнити, 2016. - 469 c.