Файл: Курсовая работа по дисциплине Программирование в компьютерных системах. на тему Авторизация пользователей в бд.pdf
Добавлен: 11.01.2024
Просмотров: 48
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Негосударственного аккредитованного некоммерческого частного
профессионального образовательного учреждения «Северо-Кавказский
техникум «Знание»
Приморско-Ахтарский филиал НАНЧПОУ СКТ «Знание»
КУРСОВАЯ РАБОТА
по дисциплине: «Программирование в компьютерных системах».
на тему:
«Авторизация пользователей в БД».
Выполнила: студентка 3 курса группы 139-П
Похвалит Мария Дмитриевна
Преподаватель:
Бормотов Виктор Валентинович
Приморско-Ахтарск
2022г.
1
Введение
Компьютеры используются повсеместно: невозможно найти предприятие или учреждение, которые не применяли бы их для решения производственных или управленческих задач. Подобные высказывания не слишком заметны в средствах массовой информации, потому что они уже давно не являются новостью. Профессионалы, однако, понимают, что на самом деле важны не компьютеры, а информационные системы, которые на них работают, а в центре любой информационной системы находятся данные.
Данная курсовая работа называется «Авторизация пользователей в базе данных». Благодаря авторизации пользователи могут осуществлять безопасный вход. Таким образом, без авторизации невозможно обойтись, ведь она применяется практически везде.
Авторизация существует для доступа к данным и выполнению различных действий, в неё можно входить с помощью ролей пользователей базы данных и разрешений. Авторизация относится к разрешениям, назначенным пользователю, и определяет, что этому пользователю разрешено делать. Авторизация контролируется членством в роли базы данных вашей учетной записи пользователя и разрешениями на уровне объектов. В качестве наилучшей практики вы должны предоставлять пользователям наименьшие необходимые привилегии.
Авторизация может быть:
Успешной — пользователь подтвердил свои права (ввел правильный пароль). В таком случае он получает доступ к системе и может пользоваться ее функционалом.
2
Неуспешной — пользователь допустил ошибку при вводе данных или у него нет доступа к базе данных. В этом случае ему будет отказано в доступе.
Не следует путать авторизацию с аутентификацией и идентификацией.
Целью данной курсовой работы является создание авторизации в базе данных. Согласно цели поставим задачи:
Изучение особенностей авторизации
Разработка БД с авторизацией
Реализация разработанной авторизации в конкретной СУБД (MySQL)
Регистрация и авторизация пользователей на сайте
Автоматизация работы с созданной БД
3
Глава 1. Среда MySQL.
Архитектура MySQL очень отличается от архитектур иных серверов баз данных, что делает эту СУБД полезной для одних целей, но одновременно неудачным выбором для других. MySQL неидеальна, но достаточно гибка для того, чтобы хорошо работать в очень требовательных средах, например в веб-приложениях. В то же время MySQL позволяет применять встраиваемые приложения, хранилища данных, индексирование содержимого, программное обеспечение для доставки, высоконадежные системы с резервированием, обработку транзакций в реальном времени
(OLTP) и многое другое. Для того чтобы максимально эффективно использовать MySQL, нужно разобраться в ее устройстве. Гибкость системы проявляется во многом. Например, вы можете настроить ее для работы на различном оборудовании и поддержки разных типов данных. Однако самой необычной и важной особенностью MySQL является такая архитектура подсистемы хранения, в которой обработка запросов и другие серверные задачи отделены от хранения и извлечения данных. Подобное разделение задач позволяет выбирать способ хранения данных, а также настраивать производительность, ключевые характеристики и др.
Чтобы хорошо понимать работу сервера, нужно иметь представление о взаимодействии его компонентов. На рисунке 1.1. представлен логический вид архитектуры MySQL.
4
На верхнем уровне располагаются службы, не являющиеся уникальными компонентами MySQL. Они необходимы большинству сетевых клиент-серверных инструментов или серверов: для обслуживания соединений, аутентификации, обеспечения безопасности и т. п. Второй уровень намного интереснее. Здесь находится большая часть «мозгов»
MySQL: код для обработки, анализа, оптимизации и кэширования запросов, а также все встроенные функции (например, функции даты времени, математические и функции шифрования). Здесь также расположены все инструменты, используемые в подсистемах хранения, например хранимые процедуры, триггеры и представления. Третий уровень содержит подсистемы хранения данных. Они отвечают за хранение всех данных в MySQL и их извлечение. Подобно различным файловым системам, доступным для
GNU/Linux, каждая подсистема хранения данных имеет как сильные, так и слабые стороны. Сервер взаимодействует с ними через API подсистемы хранения данных. Этот интерфейс скрывает различия между такими подсистемами и делает их практически прозрачными на уровне запросов. API содержит пару десятков низкоуровневых функций, выполняющих операции типа «начать транзакцию» или «извлечь строку с таким первичным ключом».
Подсистемы хранения не анализируют запросы SQL1 и не взаимодействуют друг с другом, они просто отвечают на исходящие от сервера запросы.
5
1.1. Причины популярности MySQL
Основное внимание разработчиков MySQL всегда было направлено на эффективную реализацию самых распространенных функций. Поэтому
MySQL обладает меньшими возможностями, чем ее главный свободно распространяемый конкурент — СУБД PostgreSQL или коммерческие системы управления базами данных. Однако благодаря навыкам, приобретенным после знакомства с этой книгой, вы сможете выполнять обслуживание базы данных на любой платформе. Многие системы управления базами данных, включая даже свободно распространяемые, построены на основе MySQL.
Размер и скорость. MySQL способна работать при наличии довольно скромной аппаратной поддержки и малого количества ресурсов.
Пользователи небольших организаций могут запускать MySQL на простых настольных системах. Что же касается скорости извлечения информации, то она уже долгое время является главной причиной выбора Web-администраторами именно этой СУБД. И хотя усилия, предпринятые командой MySQL AB в последние годы, благодаря разработкам для крупных сайтов были направлены на добавление функций, понижающих скорость извлечения данных, модульный дизайн позволяет не применять расширенные возможности MySQL и поддерживать гибкость и довольно высокую скорость.
Легкость установки. MySQL можно установить, не вдаваясь в сложности, связанные с конфигурацией. Более того, поскольку в дистрибутивы Linux часто включается MySQL, установка может быть почти автоматической. Это не означает, что в MySQL легко выполнять административные задачи. Далее в книге описаны возможности, повышающие безопасность СУБД.
Соблюдение стандартов. Различные стандарты SQL и причины, по которым невозможно найти между ними соответствие, будут описаны чуть ниже, в разделе «Язык структурированных запросов». Однако
6 изучение MySQL подготовит вас к использованию других систем управления базами данных. Перенос кода из одной СУБД в другую никогда не бывает тривиальным, тем не менее MySQL является стандартной системой с обширными возможностями разработки.
Реагирование на требования сообщества. Рассредоточив своих служащих по всему земному шару, MySQL AB теперь может своевременно реагировать на требования пользователей. Ведущие разработчики проводят семинары и конференции, на которых всегда готовы поддержать новые идеи. Кроме того, практически в каждом городе существуют локальные пользовательские группы MySQL, способные адекватно реагировать на все возникающие требования благодаря тому, что MySQL является свободно распространяемой
СУБД. Любой достаточно опытный программист может просмотреть код программы для поиска и решения проблем. В MySQL используется метод двойного лицензирования. Если вы хотите на основе СУБД создать собственный продукт, то можете оплатить лицензию MySQL.
Если же вы собираетесь использовать MySQL только для некоммерческих целей, вам не придется платить за лицензию. MySQL
AB также предлагает техническую поддержку для множества различных компаний и консультантов.
Простой интерфейс для связывания с другим программным
обеспечением. MySQL можно использовать как часть более крупной системы, например разрабатывая программы, которые будут напрямую взаимодействовать с базой данных MySQL. Большинство основных языков программирования содержат библиотеки или функции для совместного использования с MySQL, включая C, PHP, Perl, Python,
Ruby и языки Microsoft .NET. MySQL также поддерживает стандарт
Open Database Connectivity (ODBC), что делает возможным использование этой СУБД даже в случае недоступности ее специфической функциональности.
7
1.2. Управление пользователями и привилегиями
Изучение MySQL, разработка приложений и развертывание готового программного обеспечения представляют собой задачи с различными требованиями защиты. Во время изучения основ MySQL, особенно при работе на собственной машине, случайное удаление БД или таблиц, изменение данных и предоставление неограниченного доступа к серверу
MySQL и его базам данных не является критической проблемой. Тем не менее, при разработке и поддержке реальных приложений очень важно защитить сервер и базы данных от случайных или намеренных действий, способных привести к удалению, изменению или обнародованию данных. С помощью средств управления пользователями и привилегиями MySQL можно правильно настроить и защитить доступ к серверу баз данных.
Помимо настройки привилегий доступа к серверу MySQL необходимо отдельно продумать физическую защиту главного компьютера и резервных копий, а также правильно задать конфигурацию полномочий на уровне операционной системы. Сервер MySQL устанавливается с пользователем root, который может выполнять на сервере любые задачи, включая создание и удаление пользователей, баз данных, таблиц, индексов и данных.
Большинству приложений для выполнения ежедневных операций не требуются привилегии суперпользователя. Поэтому имеет смысл задать пользователей лишь с теми привилегиями, которые им нужны для выполнения своей работы. Можно запретить пользователям создавать или изменять индексы, таблицы или базы данных. Даже можно ограничить пользователей простыми инструкциями SELECT в заданной БД или отдельных ее таблицах.
При регистрации на сервере MySQL в качестве пользователя root для выполнения стандартных задач увеличивается вероятность того, что неавторизованный пользователь сможет извлечь достаточно информации для получения доступа к этой учетной записи. Даже можно сделать ошибку и случайно повредить базу данных.
8
Учитывая все сказанное выше, я рассмотрю следующие вопросы:
привилегии MySQL;
добавление, удаление и изменение пользователей и паролей MySQL;
привилегии GRANT и REVOKE;
конфигурация защиты MySQL по умолчанию;
разработка политики безопасности для сервера MySQL;
управление пользователями и привилегиями с помощью запросов SQL;
ограничение работы пользователя с сервером.
Как и большинство других серверов баз данных, MySQL имеет пользователей с привилегиями, определяющими их права на создание, модифицирование, удаление БД и выполнение запросов, а также на модифицирование привилегий и управление сервером. На практике это управление может быть крупноструктурным, когда пользователю разрешен или запрещен доступ к серверу, или мелкоструктурным, при котором пользователь имеет доступ лишь к определенным таблицам базы данных или даже к немногим столбцам таблицы. Некоторые серверы БД поддерживают только крупноструктурное управление, а другие, в том числе и MySQL, — как крупноструктурный, так и мелкоструктурный контроль доступа к данным. Сервер MySQL позволяет управлять получением доступа пользователей к серверу, базам данных, таблицам и столбцам на сервере, а также определять для них типы действий, которые они могут выполнять с этими структурами. Например, MySQL разрешает явным образом управлять правом пользователей запускать инструкции SELECT, UPDATE, INSERT и
DELETE, использовать для структур выражения LOCK TABLES, ALTER, а также создавать или удалять индексы.
Пользователи MySQL отличаются от пользователей операционной системы компьютера сервера. В системе Linux или Mac OS X суперпользователем является root, а в Windows — это Administrator. Помимо суперпользователя создается еще несколько учетных записей для работы с
9 сервером. Для записи, чтения электронной почты, работы с Web и выполнения других операций вполне хватает обычной учетной записи.
Обычная учетная запись не может получать доступ или модифицировать важные системные файлы, например, получать доступ к настройкам аппаратной поддержки или к журналам регистрации и файлам данных сервера MySQL. В однопользовательской системе применение менее привилегированной учетной записи для выполнения ежедневной работы снижает вероятность случайного удаления важных системных файлов или установки злонамеренных программ. На корпоративном сервере такая защита играет важную роль. Она не только дает возможность предотвратить случайные повреждения или злонамеренные атаки, но и обеспечивает конфиденциальность файлов и данных.
Если системная учетная запись на сервере может получать доступ к конфигурации MySQL, то она в состоянии обойтись без монитора (или любого иного агента MySQL) и выполнить действия непосредственно на сервере или в базах данных. Например, системный пользователь root может манипулировать в системе любым экземпляром MySQL, а обычный пользователь — лишь экземплярами, запущенными под его учетной записью.
Использование такой учетной записи дает возможность пропустить аутентификацию сервера MySQL и схему управления пользователями, запустив сервер с ключом skip-grant-tables.
С помощью текстового редактора также можно просматривать данные, индексы и структуры баз данных или же просто копировать куда-нибудь базы данных и получать к ним доступ посредством другой инсталляции
MySQL. Поэтому вам следует принять стандартные меры предосторожности для поддержки физической защиты сервера, постоянно обновлять операционную систему, добавить сетевой брандмауэр, использовать соответствующие полномочия для файлов и папок и требовать сложные пароли. Нужно помнить, что если сервер не защищен или взломан, то сервер
10
MySQL полностью лишается защиты независимо от конфигурации пользователей и привилегий MySQL. Точно так же следует позаботиться о защите доступа к резервным копиям баз данных.
1.3. Утилиты SQL
Существует множество бесплатных надстроек и утилит, которые можно использовать на самом сервере, некоторые из них довольно мощные.
common_schema.
Проект
Шломи
Ноача common_schema
(http://code.openark.org/ forge/common_schema) - это мощный набор подпрограмм и представлений для серверных скриптов и администрирования. Для MySQL common_schema - как jQuery для javaScript.
mysql-sr-lib. Джузеппе Максиа (Giuseppe Maxia) создал библиотеку хранимых процедур для MySQL, которую вы можете найти по адресу http://www.nongnu.org/ mysql-sr-lib/.
Репозиторий UDF для MySQL. Роланд Бауман (Roland Bouman) организовал создание набора пользовательских функций для MySQL, который доступен по адресу http://www.mysqludf.org.
MySQL Forge. В MySQL Forge (http://forge.mysql.com) вы найдете сотни программ, скриптов, фрагментов кода, утилит, подсказок и трюков, распространяемых сообществом.