- •«Московский технический университет связи и информатики» (мтуси)
- •Практическая работа
- •Введение
- •Предметная область
- •Бизнес требования Функциональные требования
- •Сценарии использования для описания функциональности (Use Case)
- •Uc. Регистрация на сайте
- •Uc. Авторизация на сайте
- •Проектирование и разработка ис
- •Запрос для создания бд:
- •Запрос для авторизации:
- •Запись в бд нового пользователя
- •Язык программирования
- •Интерфейс
- •Угрозы защиты информации
- •Симптомы sqLi-атаки
- •Типы sql-инъекций
- •Внутриполосная атака (In-band sqLi)
- •Инференциальная атака (Inferential sqLi, также известна как «слепая sql-инъекция»)
- •Внеполосная атака (Out-of-band sqLi)
- •Последствия атак на основе sql-инъекции
- •Примеры sql-инъекций
- •Методика защиты от угроз
- •Приложение а Файл main.Py
- •Приложение б Файл main_no_injection.Py
- •Приложение в Файл Config.Json
Запрос для создания бд:
CREATE TABLE users (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
privilege INT NOT NULL
);
Запрос для авторизации:
"SELECT * FROM users WHERE email = '" + email + "' AND password = '"+ password +"'"
Запись в бд нового пользователя
"INSERT INTO users (email, password, privilege) VALUES (%s,%s,%s)"
Язык программирования
При разработки информационной системы использовался язык программирования Python версии 3.12.
Python является свободным и открытым исходным кодом, с большим количеством библиотек, что упрощает разработку безопасных систем и приложений. Этот язык программирования имеет широкий спектр применения, так как является интерпретируемым и может легко интегрироваться с другими языками программирования. Это позволяет определить, какие пользователи имеют доступ к каким данным, а также устанавливать ограничения на операции с данными.
В рамках практической работы использовались библиотеки, представленные в таблице 3.
Таблица 3. Используемые библиотеки Python
Название библиотеки |
Назначение |
OS |
Необходима для работы с операционной системой |
RE |
Необходима для сопоставления регулярных выражений, аналогичные тем, которые можно найти в Perl. |
JSON |
Необходима для обмена данными, основанный на синтаксисе объектных литералов JavaScript |
PYMYSQL |
Необходима для подключения к MYSQL |
FLASK |
Необходима для создание запросов к веб серверу |
WAITRESS |
Необходима для создания веб сервера |
Интерфейс
Внешний вид сайта, представлен на рисунках 1-4.
Рисунок 1 Внешний вид формы Регистрации.
Рисунок 2. Внешний вид формы Авторизации
Рисунок 3. Внешний вид личного кабинета Пользователя
Рисунок 4. Внешний вид личного кабинета Администратора
Угрозы защиты информации
Одним из видов уязвимостей, которым подвержены веб-сайты – это SQL-инъекция. Данная уязвимость позволяет атакующему использовать фрагмент вредоносного кода на языке структурированных запросов (SQL) для манипулирования базой данных и получения доступа к потенциально ценной информации. Атаки на основе таких уязвимостей – одни из самых распространенных и опасных: они могут быть нацелены на любое веб-приложение или веб-сайт, которые взаимодействуют с базой данных.
SQL-запрос – это запрос, направленный в базу данных для выполнения определенной операции или функции, такой как извлечение данных или исполнение SQL-кода. Например, запрос может осуществлять передачу учетных данных пользователя через веб-форму для доступа к сайту. Обычно подобные веб-формы сконфигурированы таким образом, чтобы принимать только определенные типы данных, такие как имя пользователя и (или) пароль. Введенная информация сверяется с базой данных. Если все совпадает, пользователь сможет войти на сайт. А если нет – в доступе будет отказано.
Ситуация опасна тем, что большинство веб-форм не имеют механизмов, которые бы исключали ввод дополнительной информации в поле. Это дает злоумышленникам возможность передать в базу данных собственные запросы через поля ввода формы. Они могут использовать эту уязвимость в разных преступных целях, начиная с кражи конфиденциальных данных и заканчивая манипулированием сведениями в базе.
Так как подавляющее большинство веб-сайтов и серверов полагаются на базы данных, SQL-инъекции являются одними из самых давних и распространенных видов кибератак. В сообществе киберпреступников появилось несколько разработок, повышающих вероятность таких атак: прежде всего речь идет об инструментах, которые позволяют обнаружить уязвимое место для SQL-инъекции. Соответствующие утилиты представлены в свободном доступе как проекты с открытым исходным кодом. Достаточно нажать нужную кнопку, и за считаные минуты будет реализована атака, позволяющая заполучить доступ к любой таблице или столбцу базы данных.
