Добавлен: 17.06.2023
Просмотров: 262
Скачиваний: 5
Введение
Цифровые технологии плотно окутало своими щупальцами каждый уголок нашего необъятного мира. Современный мир неразрывно связан с высокими технологиями, они шагают в ногу со всем человечеством и уже вряд ли когда люди смогут отказаться от них. Их перечень на сегодняшний день очень велик: начиная от умных наручных браслетов и заканчивая целыми комплексами, состоящие из большого числа электронных элементов. Несомненно, вклад технологий в нашу повседневную жизнь неоценим, они приносят нам огромную пользу, облегчают труд и выполняют за нас рутинную работу. Уже невозможно представить какую-либо сферу человечества, где бы ни применялись современные технологии. Однако, несмотря на легкость применения, за такими технологиями скрывается очень большой человеческий труд. Над одним устройством могут работать сотни людей, общими усилиями которых, по крупицам создаются грандиозные проекты. Любая технология, несомненно, должна развиваться и своевременно обновлять свои функциональные предназначения.
Цифровая информация движется и передается с огромной скоростью и огромным потоком. Однако, несмотря на это, у людей остаются простые вкусы и понятия красоты. Человек никогда не разучится любить красивое. Такой красотой, например, являются цветы. Цветы - самое великолепное творение созданное природой. Людей, которым нравятся цветы, достаточно много, что само по себе создает определенную нишу для торговли в этой сфере. Здесь как нельзя кстати подойдет интернет-магазин по продаже цветов, ведь сейчас наблюдается тенденция в сторону осуществления онлайн-покупок. Поэтому просто необходимо создать веб-сайт по продаже цветов и обеспечить себя хорошим, стабильным доходом.
Предметом исследования является цветочный магазин.
Объектом исследования является процесс продажи цветов.
Целью работы является создание веб-сайта цветочного магазина. Веб-сайт должен содержать полностью соответствовать современным стандартам, как по дизайну, так и по внутренней структуре. Также он должен иметь следующие свойства:
- Веб-сайта должна быть нетребовательна к ресурсам.
- Сайт должен использовать динамические страницы, содержать активные скрипты и таблицы стилей.
- Интерфейс должен быть интуитивным и понятным для пользователя и не содержать лишних элементов, загромождающих обзор и впечатление.
- Скорость работы должна быть достаточно высока при обработке большого количества изображений.
Для достижения поставленной цели нужно решить следующие задачи:
- Определиться с языком программирования.
- Разработать веб-сайт.
1 Основная часть
1.1 Требования к приложению
Сайт представляет собой полнофункциональный, законченный веб-сайт цветочного магазина. Веб-сайт должен быть реализован средствами HTML и CSS, а также использовать интерактивные элементы клиентской части на JavaScript. Все ссылки на сайте должны быть относительными. Сайт должен корректно отображаться в браузерах Internet Explorer 8.0 и выше, Opera 12.0.
Любой сайт обрабатывает информацию. Информация делится на входную и выходную. Входная информация - это та, которая принимается в начале процесса обработки. Выходная информация - это та, которая получается после процесса обработки.
Входными данными являются:
- Фамилия, имя, отчество клиента
- Телефон клиента
- Платежные данные
Выходными данными являются:
- Данные о товаре
- Информация об остатках товара
- Контактные данные магазина (ИНН, ОГРН, телефон, место нахождения)
- Отзывы
- Информация о покупке
1.2 Анализ исходных данных
На сайте используются следующие различные файлы и папки. Каждый из них выполняет определенные задачи. Различаются они по типу своему согласно расширению.
Таблица 1. Описание файлов сайта
Имя файла или папки |
Описание |
images |
Каталог для хранения изображений сайта, а также изображений продаваемых товаров |
css |
Каталог для хранения таблиц стилей |
scripts |
Каталог для хранения скриптов |
main.css |
Таблицы стилей, которые содержат перечни правил CSS и комментарии к ним. Основной для сайта |
animate.css |
Таблицы стилей, которые содержат перечни правил для анимации элеменов |
favicon.ico |
Главная иконка сайта, которая отображается в окне браузера |
index.php |
Самый главный файл сайта. Именно с этого файла начинается отображение всего содержимого веб-документа. Данный файл подгружает все остальные файлы (php-скрипты, javascript-файлы, изображение, иконки, шрифты и т.д.) |
1.3 Обоснование выбора программных средств
В ходе написания дипломной работы встал вопрос: на чем написать свой сайт? Чтобы ответить на этот вопрос нужно обратить внимание на известные и высоконагруженные ресурсы Интернет, таким как "Одноклассники", "Фейсбук", "ВКонтакте" и др.
После небольшого анализа и поиска информации выяснилась любопытная деталь: оказывается в мире существует не один и не два средств разработки для написания профессиональных сайтов. Их несколько десятков. И вот наиболее популярные из них:
- Java ("Одноклассники");
Рисунок . Главная страница "Одноклассники"
- PHP ("Фейсбук", "ВКонтакте");
Рисунок . Главная страница "ВКонтакте"
Рисунок . Главная страница "Фейсбук"
- C# ("Stack Overflow");
Рисунок . Главная страница "StackOverflow"
- Python ("Youtube");
Рисунок . Главная страница "Youtube"
- Ruby ("Твиттер").
Рисунок 6. Главная страница "Twitter"
Это стандартные языки, для них можно найти много хороших инструментов, замечательной литературы и профессиональных разработчиков, которые охотно поделятся своим опытом. Каждый язык хорош по-своему. У каждого есть хорошие и плохие стороны.
В качестве основного критерия выбора является - распространенность. Таким языком оказался PHP[1], потому что сегодня он поддерживается большим количеством хостинг-провайдеров[2] и несомненно является одним из лидеров среди языков программирования, которые программисты активно применяют для создания динамических веб-ресурсов.
Рисунок 7. Логотип языка программирования PHP
На сегодняшний день PHP используется сотнями тысяч разработчиков. Он одинаково подходит как новичку, так и профессионалу. На нем можно написать сайты-одностранички, а также гигантские проекты.
1.4 Минимальные системные требования
Современные ПЭВМ обладают большими вычислительными мощностями, и пользователи редко задумываются об аппаратных требованиях той или иной программы. Несмотря на это, программистам и разработчикам не стоит пренебрегать правилами экономии ресурсов, так как в мире остается большое количество «слабых» машин, которые по-прежнему находятся в строю. Большой ошибкой будет сбрасывание их со счетов, так как пользователь скорее удалит программу, чем нарастит из-за нее характеристики своей ПЭВМ. Веб-серверу необходимы следующие минимальные аппаратные ресурсы:
Таблица 2. Минимальные системные требования
Системный ресурс |
Минимальное значение |
Процессор |
INTEL Celeron G3920 |
Оперативная память |
512 Мб |
Жесткий диск |
10 Мб |
Операционная система |
Windows, UNIX, Linux и прочие |
PHP |
5 и выше |
MySQL |
5 и выше |
1.5 Защита от SQL-инъекций
Большинство программистов даже не подозревают, что SQL-запросы, используемые в их проектах, могут быть подделаны. Они считают, что SQL-запросы всегда корректны и достоверны. Реальное положение дел таково, что такие поддельные запросы могут без труда обойти режим разграничения доступа к базе данных и типичную проверку авторизации. Некоторые виды SQL-запросов могут дать возможность выполнять команды ОС!
Прямое внедрение вредоносных инструкций в SQL-запросы - это действия, в которых атакующий создает или модифицирует текущие SQL-запросы для получения скрытых данных из БД, их изменения или даже выполнения очень опасных команд ОС на сервере. Атака исполняется на базе приложения, генерирующего SQL-запросы из пользовательского ввода и статических параметров.
Из-за отсутствия на стороне сервера проверки пользовательских данных и соединения с БД под учетной записью суперпользователя (или любого другого пользователя, наделенного такими привилегиями), атакующий имеет возможность, например, создать еще одного пользователя базы данных с правами суперпользователя. Согласитесь, это не очень приятно если вы являетесь администратором проекта.
Хотя очевидно, что атакующий должен знать по крайней мере некоторые тонкости при работе о структурой БД, чтобы провести успешную атаку, заполучить такую информацию порой очень просто. Например, если база данных является частью open-source или другого публично доступного программного пакета с инсталляцией по умолчанию, эта информация является полностью открытой и доступной. Эти данные также могут быть получены из закрытого проекта, даже если он закодирован, усложнен, или скомпилирован, и даже из вашего личного кода через отображение сообщений об ошибках. К другим методам относится использование распространенных (легко угадываемых) названий таблиц и столбцов. Например, форма логина, которая использует таблицу 'users' c названиями столбцов 'id', 'username' и 'password'.
Рисунок 8. Пример SQL-инъекции через форму авторизации
Почти все успешные атаки основываются на коде, которые написаны без учета требований безопасности. Запомните: нельзя слепо доверять вводимым данным пользователя, особенно если они приходят со стороны клиента, даже если это списки в форме, скрытые поля или cookie.
В PHP-языке есть несколько правил безопасности при работе с SQL-запросами:
- Никогда не соединяйтесь с базой данных, используя учетную запись владельца базы данных или суперпользователя. Всегда старайтесь использовать специально созданных пользователей с максимально ограниченными правами.
- Используйте подготовленные выражения с привязанными переменными. Эта возможность предоставляется расширениями PDO, MySQLi и другими библиотеками.
- Всегда проверяйте введенные данные на соответствие ожидаемому типу. В PHP есть множество функций для проверки данных: начиная от простейших функций для работы с переменными и функций определения типа символов (таких как is_numeric() и ctype_digit() соответственно) и заканчивая Perl-совместимыми регулярными выражениями.
- В случае, если приложение ожидает цифровой ввод, примените функцию ctype_digit() для проверки введенных данных, или принудительно укажите их тип при помощи settype(), или просто используйте числовое представление при помощи функции sprintf().
- Ни в коем случае не выводите никакой информации о БД, особенно о ее структуре.
Помимо всего вышесказанного, вы можете логировать запросы в вашем скрипте либо на уровне базы данных, если она это поддерживает. Очевидно, что логирование не может предотвратить нанесение ущерба, но может помочь при трассировке взломанного приложения.
Лог-файл полезен не сам по себе, а информацией, которая в нем содержится. Причем, в большинстве случаев полезно логировать все возможные детали.
В наших скриптах используются некоторые приемы, способные противодействовать SQL-инъекциям, например, при помощи преобразований параметров в число (val).
1.6 Разработка приложения
Веб-сайт написан на языке гипертекстовой разметки HTML с использованием таблиц стилей CSS и языка программирования JavaScript.
Главная страница состоит из нескольких блоков:
- Заголовок
- Блок "О компании"
- Блок "Наша работа"
- Блок "Наши услуги"
- Блок "Отзывы"
- Блок "Как к нам добраться"
- Нижняя часть