Безопасность базы данных

Курсовая работа

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

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

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

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

7 стр., 3173 слов

Персональные данные как информация ограниченного доступа

... информационных технологий только усилил степень этой опасности. В России впервые персональные данные как вид документированной информации ограниченного доступа были определены в Федеральном законе от 20.02.1995 №24-ФЗ "Об информации, информатизации и защите информации". К персональным данным ... организации. При получении персональных данных от третьей стороны, организация обязана заранее уведомить ...

Один из основных выводов отчета CSI/FBI — значительно возросший ущерб от такой угрозы, как кража конфиденциальных данных. Каждая американская компания в среднем потеряла 355,5 тыс. долл. только из-за утечек конфиденциальных данных за прошедшие 12 месяцев. Средний размер потерь от действий инсайдеров составил 300 тыс. долл. (максимальный — 1,5 млн долл.).

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

Целью данной курсовой работы является рассмотрения вопроса о безопасности баз данных.

Для решения поставленной цели необходимо решить следующие задачи:

1. Возможность избежания несанкционированного доступа к базе данных.

2. Хранение зашифрованных данных.

3. Техника защиты баз данных.

информационный база управление безопасность

1. Хищение информации из баз данных

1.1 Управление доступом в базах данных

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

Итак, имеются следующие исходные данные:

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

Это не позволяет решить проблему комплексно (введение штатных единиц, отвечающих за информационную безопасность.

Основные требования по безопасности данных, предъявляемые к БД и СУБД, во многом совпадают с требованиями, предъявляемыми к безопасности данных в компьютерных системах — контроль доступа, криптозащита, проверка целостности, протоколирование и т.д.

Под управлением целостностью в БД понимается защита данных в БД от неверных (в отличие от несанкционированных) изменений и разрушений. Поддержание целостности БД состоит в том, чтобы обеспечить в каждый момент времени корректность (правильность) как самих значений всех элементов данных, так и взаимосвязей между элементами данных в БД . С поддержанием целостности связаны следующие основные требования [11].

7 стр., 3287 слов

Базы данных и системы управления базами данных

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

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

Управление параллелизмом. Нарушение целостности БД может возникнуть при одновременном выполнении операций над данными, каждая из которых в отдельности не нарушает целостности БД . Поэтому должны быть предусмотрены механизмы управления данными, обеспечивающие поддержание целостности БД при одновременном выполнении нескольких операций.

Восстановление. Хранимые в БД данные должны быть устойчивы по отношению к неблагоприятным физическим воздействиям (аппаратные ошибки, сбои питания и т .п .) и ошибкам в программном обеспечении . Поэтому должны быть предусмотрены механизмы восстановления за предельно короткое время того состояния БД, которое было перед появлением неисправности [6].

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

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

Большинство современных СУБД имеют встроенные средства, позволяющие администратору системы определять права пользователей по доступу к различным частям БД, вплоть до конкретного элемента . При этом имеется возможность не только предоставить доступ тому или иному пользователю, но и указать разрешенный тип доступа: что именно может делать конкретный пользователь с конкретными данными (читать, модифицировать, удалять и т . п .), вплоть до реорганизации всей БД Таблицы (списки) управления доступом широко используются в компьютерных системах, например, в ОС для управления доступом к файлам .Особенность использования этого средства для защиты БД состоит в том, что в качестве объектов защиты выступают не только отдельные файлы (области в сетевых БД, отношения в реляционных БД), но и другие структурные элементы БД: элемент, поле, запись, набор данных [3].

1.2 Управление целостностью данных

Нарушение целостности данных может быть вызвано рядом причин:

  • ? сбои оборудования, физические воздействия или стихийные бедствия;
  • ? ошибки санкционированных пользователей или умышленные действия несанкционированных пользователей;
  • ? программные ошибки СУБД или ОС;
  • ? ошибки в прикладных программах;
  • ? совместное выполнение конфликтных запросов пользователей и др.

Нарушение целостности данных возможно и в хорошо отлаженных системах . Поэтому важно не только не допустить нарушения целостности, но и своевременно обнаружить факт нарушения целостности и оперативно восстановить целостность после нарушения.

18 стр., 8619 слов

Восстановление данных с флеш-носителей

... отказаться от внешних устройств-программаторов. Для записи данных память достаточно было подключить к системной шине микропроцессора, что значительно упрощало работу с микросхемой, поэтому стоимость EEPROM была ... 5 Стирание[3] Многоуровневые ячейки Рис. 6 Одноуровневая и многоуровневая ячейка Через несколько лет после выпуска флеш-дисков были проведены успешные испытания микросхем, в которых ячейка ...

1.3 Управление параллелизмом

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

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

С точки зрения безопасности данных такой механизм отображения изменений в БД очень существенен . Если транзакция была прервана, то специальные встроенные средства СУБД осуществляют так называемый откат — возврат БД в состояние, предшествующее началу выполнения транзакции (на самом деле откат обычно заключается просто в невыполнении изменений, обусловленных ходом транзакции, в физической БД) . Если выполнение одной транзакции не нарушает целостности БД, то в результате одновременного выполнения нескольких транзакций целостность БД может быть нарушена . Чтобы избежать подобного рода ошибок, СУБД должна поддерживать механизмы, обеспечивающие захват транзакциями модифицируемых элементов данных до момента завершения модификации так называемые блокировки . При этом гарантируется, что никто не получит доступа к модифицируемому элементу данных, пока транзакция не освободит его . Применение механизма блокировок приводит к новым проблемам управления параллелизмом, в частности, к возникновению ситуаций клинча двух транзакций. Причем, если некоторая транзакция пытается блокировать объект, который уже блокирован другой транзакцией, то ей придется ждать, пока не будет снята блокировка объекта транзакцией, установившей эту блокировку . Иными словами, блокировку объекта может выполнять только одна транзакция [4].

1.4 Восстановление данных

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

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

3 стр., 1035 слов

Библиографические базы данных ( ивные журналы ВИНИТИ, базы данных ...

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

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

Вся информация физически хранится в области данных, однако, ведомости о файлах находятся в системной области. Механизм такой организации работы выглядит следующим образом: при подключении носителя к компьютеру система не сканирует весь диск на наличие файлов, а быстро считывает данные о них из системной области. Так же ОС взаимодействует с носителем, например, при удалении данных: физически файлы не уничтожаются, а удаляются лишь ссылки на них в файловой таблице. Это даёт системе основания считать «освободившиеся» кластеры носителя пустыми и пригодными для дальнейшей перезаписи. Таким образом, первый случай, когда восстановление данных возможно — исчезновение ссылки на файл в файловой таблице при условии, что файл не был перезаписан иными данными. Второй распространённый случай — форматирование носителя. Существует три типа форматирования:

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

— Полное форматирование — стирается и системная область, и область данных. Этот тип форматирования предусматривает полную очистку носителя, однако, для ускорения процесса стирается область данных не полностью, а фрагментами. Это даёт (пусть и небольшой) шанс на восстановление нужных файлов.

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

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

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

Можно выделить три основных уровня восстановления:

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

6 стр., 2655 слов

База данных. Понятие базы данных. Виды баз данных. Объекты для ...

... мультимедийные; 3.Распределённая – база данных, разные части которой хранятся на различных компьютерах, объединённых в сеть; 4.Централизованная – база данных, хранящихся на одном компьютере; 5.Реляционная – база данных с табличной организацией данных. Одно из основных свойств ...

Промежуточное восстановление .Если возникают аномалии в работе системы (системно-программные ошибки, сбои программного обеспечения, не связанные с разрушением БД), то требуется восстановить состояние всех выполняемых на момент возникновения сбоя транзакций.

Длительное восстановление. При разрушении БД в результате дефекта на диске восстановление осуществляется с помощью копии БД. Затем воспроизводят результаты выполненных с момента снятия копии транзакций и возвращают систему в состояние на момент разрушения [10].

1.5 Транзакция и восстановление

Прекращение выполнения транзакции вследствие появления сбоя нарушает целостность БД . Если результаты такого выполнения транзакции потеряны, то имеется возможность их воспроизведения на момент возникновения сбоя . Таким образом, понятие транзакции играет важную роль при восстановлении. Для восстановления целостности БД транзакции должны удовлетворять следующим требованиям:

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

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

Пользователь может установить в процессе выполнения транзакции произвольное количество таких точек . Если в ходе выполнения транзакции достигается точка фиксации, то СУБД автоматически осуществляет указанную выше операцию [2].

1.6 Откат и раскрутка транзакции

Основным средством, используемым при восстановлении, является системный журнал, в котором регистрируются все изменения, вносимые в БД каждой транзакцией . Возврат транзакции в начальное состояние состоит в аннулировании всех изменений, которые осуществлены в процессе выполнения транзакции . Такую операцию называют откатом . Для воспроизведения результатов выполнения транзакции можно, используя системный журнал, восстановить значения проведенных изменений в порядке их возникновения, либо выполнить транзакцию повторно . Воспроизведение результатов выполнения транзакции с использованием системного журнала называется раскруткой. Раскрутка является достаточно сложной, но необходимой операцией механизмов восстановления современных БД

2. Безопасность баз данных

2.1 Планирование баз данных

Сегодня базы данных — основная составляющая практически любых приложений, основанных на Web, которая дает возможность предоставления разнообразного динамического содержимого. Поскольку в таких базах данным может храниться весьма важная и секретная информация, нужно позаботиться и об их защите. Архитектура, используемая при создании Web-страниц с помощью PL/SQL WebToolkit, на удивление проста, как показано на рис.1 (см. Приложение А).

30 стр., 14808 слов

Реферат локальные базы данных

... распределенных транзакций (distributed transaction processing) Независимость от оборудования (hardware independence) Независимость от операционных систем (operationg system independence) Прозрачность сети (network independence) Независимость от баз данных (database independence) Локальная ...

Для получения или сохранения информации в базе данных, к ней нужно подключиться, послать запрос, обработать ответ и закрыть подключение. Сегодня для всего этого обычно используется структурированный язык запросов (Structured Query Language, SQL).

Давайте посмотрим, как злоумышленник может поступить с SQL-запросом [7].

Как известно, PHP не может сам защитить базу данных. Следующие разделы являются введением в основы доступа и использования баз данных в скриптах на PHP.

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

Первый шаг всегда — собственно создание базы данных, за исключением случаев использования чужих баз. Когда создается база данных, ей назначается владелец, который и вызвал команду создания. Обычно только один владелец («суперпользователь») может делать что угодно с объектами внутри этой базы данных и для того, чтобы позволить другим пользователям использовать ее, им должны быть назначены права доступа.

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

Можно создать различных пользователей баз данных для каждого необходимого действия приложений, очень сильно ограничивая доступ последних к объектам базы данных. Требуемые права должны назначаться однократно, их использования в других местах приложения нужно избегать. Это значит, что если злоумышленник получит доступ с использованием той или иной учетной записи, он сможет получить лишь тот доступ, которым обладала использованная часть программы.

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

2.2 Подключение к базе данных

Можно устанавливать подключения с помощью SSL для шифрования соединений клиент-сервер, что дает повышенную безопасность. А можно использовать ssh для шифрования сетевых соединений между клиентами и сервером баз данных. Любой из этих способов сильно усложняет отслеживание и получение информации из сетевого траффика.

2.3 Хранение зашифрованных данных

SSL/SSH защищает данные только по пути от клиента к серверу, но не данные, хранимые в базе данных. SSL — лишь сетевой протокол.

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

28 стр., 13926 слов

База данных ‘Библиотека’ в среде Microsoft Access

... механизмы работы с базами данных различных форматов. К примеру, можно прямо обращаться к базам данных dBASE, Paradox или Btrieve без конвертирования их в формат, используемый Access. В состав пакета Access также ... Field Size (размер поля). Memo-полях сохраняется текст длиной до 32000 символов. Поля этого типа данных не могут индексироваться.Числовые поля содержат произвольные числовые значения. ...

Самый легкий путь в этом случае — создать свою собственную систему шифрования, а затем использовать ее в скриптах на PHP. PHP способствует такому подходу благодаря наличию специфичных раширений, таких, как Mcrypt и Mhash, охватывающих большой ряд алгоритмов шифрования. Программа шифрует сохраняемые данные и расшифровывает получаемые. Для детального описания схем шифрования смотрите ссылки [3].

В случае скрытых данных, где не требуется их исходный вид (к примеру, для отображения), можно использовать хеширование. Известным примером хеширования является сохранение в базе данных хеша MD5 от пароля вместо самого пароля. Для подробного описания смотрите crypt() и md5().

Пример: Использование хешированных паролей

// сохраняем хеш от пароля

$query = sprintf(«INSERT INTO users(name,pwd) VALUES(‘%s’,’%s’);»,

addslashes($username), md5($password));

  • $result = pg_exec($connection, $query);

// проверяем корректность введенного пользователем пароля

$query = sprintf(«SELECT 1 FROM users WHERE name=’%s’ AND pwd=’%s’;»,

addslashes($username), md5($password));

  • $result = pg_exec($connection, $query);
  • if (pg_numrows($result) > 0) {

echo «Добро пожаловать, $username!»;

}

else {

echo «Введен неверный пароль для $username.»;

}

2.4 Внедрение в SQL

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

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

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

Пример: Разделение результата запроса по страницам и… создание суперпользователей (PostgreSQL и MySQL)

$offset = argv[0]; // внимание! нет проверки данных!

$query = «SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;»;

// в PostgreSQL

$result = pg_exec($conn, $query);

// в MySQL

$result = mysql_query($query);

  • Обычно пользователи используют кнопочки «следующая» и «предыдущая», где $offset внедрен в URL. Программа считает, что $offset — число. Однако, кто-нибудь может попытаться внедриться путем добавления urlencode()-кодированных данных в URL

// в случае PostgreSQL

13 стр., 6248 слов

База данных ‘Магазин по продаже автомобилей’

... продажи автомобилей могут использовать компьютерные программы для хранения различных данных (информация о машинах, о клиентах, заказах и т.д.). Целью курсового проекта является создание программы, которая упрощает работу магазина по продаже автомобилей, ... облегчают проектирование, создание БД и выборку данных из нее. база продажа автомобиль пользователь MS Access предоставляет в распоряжение ...

0;

insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)

select ‘crack’, usesysid, ‘t’,’t’,’crack’

from pg_shadow where usename=’postgres’;

// в случае MySQL

0;

  • UPDATE user SET Password=PASSWORD(‘crack’) WHERE user=’root’;
  • FLUSH PRIVILEGES;
  • Если это случится, программа предоставит ему доступ суперпользователя.

Заметим, что 0; служит для того, чтобы задать корректное смещение для исходного запроса и завершить его.

Обычная практика — заставить транслятор SQL проигнорировать остаток запроса разработчика с помощью обозначения начала коментария SQL —.

Существует путь получения паролей через ваши страницы поиска. Все, что нужно злоумышленнику — это одна не обработанная должным образом переменная, используемая в SQL-запросе. Использоваться могут команды WHERE, ORDER BY, LIMIT и OFFSET запроса SELECT. Если ваша база данных поддерживает конструкцию UNION, злоумышленник может добавить к исходному запросу еще один — для получения паролей. В этом случае поможет хранение зашифрованных паролей [12].

Пример: Вывод статей… и паролей (любой сервер баз данных)

$query = «SELECT id, name, inserted, size FROM products

WHERE size = ‘$size’

ORDER BY $order LIMIT $limit, $offset;»;

  • $result = odbc_exec($conn, $query);

Статическая часть запроса может быть совмещена с другим запросом SELECT, который выведет все пароли:

union select ‘1’, concat(uname||’-‘||passwd) as name, ‘1971-01-01’, ‘0’ from usertable;

  • Если подобный запрос (использующий ‘ и —) будет задан в одной из переменных, используемых $query, то атака будет успешной.

Запросы SQL «UPDATE» также могут быть использованы для атаки на базу данных. Эти запросы также подвержены опасности «обрезки» и добавления новых запросов. Но здесь злоумышленник работает с командой SET. В этом случае необходимо знание некоторой информации о структуре базы данных для удачной модификации запроса. Такая информация может быть получена путем изучения названий переменных форм или просто подбором. В конце концов, не так уж и много имен придумано для полей пользователей и паролей.

Пример: От сброса пароля до получения привилегий… (любой сервер баз данных)

$query = «UPDATE usertable SET pwd=’$pwd’ WHERE uid=’$uid’;»;

  • Злоумышленник посылает значение ‘ or uid like’%admin%’;
  • —, в переменную $uid для изменения пароля администратора или просто устанавливает $pwd в «hehehe’, admin=’yes’, trusted=100 » (с завершающим пробелом) для получения прав. Запрос будет искажен так:
  • // $uid == ‘ or uid like’%admin%’; —

$query = «UPDATE usertable SET pwd=’…’ WHERE uid=» or uid like ‘%admin%’; —«;

// $pwd == «hehehe’, admin=’yes’, trusted=100 »

$query = «UPDATE usertable SET pwd=’hehehe’, admin=’yes’, trusted=100 WHERE …;»

А вот пример того, как на некоторых серверах баз данных могут быть выполнены команды уровня операционной системы:

Пример: Атака на операционную систему сервера баз данных (сервер MSSQL)

$query = «SELECT * FROM products WHERE id LIKE ‘%$prod%'»;

  • $result = mssql_query($query);
  • Если злоумышленник пошлет значение a%’ exec master..xp_cmdshell ‘net user test testpass /ADD’ — в $prod, то $query будет выглядеть так:

$query = «SELECT * FROM products

WHERE id LIKE ‘%a%’

exec master..xp_cmdshell ‘net user test testpass /ADD’—«;

  • $result = mssql_query($query);

— Сервер MSSQL выполняет все команды SQL, включая команду добавления нового пользователя в локальную базу данных пользователей. Если это приложение было запущено, как sa и служба MSSQLSERVER имеет достаточно прав, злоумышленник будет иметь учетную запись для доступа к этой машине.

Некоторые из вышеперечисленных примеров привязаны к конкретному серверу баз данных. Но это вовсе не означает, что подобная атака невозможна на другое программное обеспечение. Ваш сервер баз данных тоже так или иначе будет уязвим для непредвиденных атак [12].

2.5 Техника защиты

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

Большинство атак построены на использовании кода, который писался без учета соображений безопасности. Никогда не доверяйте введенным данным, особенно если они идут с клиентской стороны, пусть даже и из поля отметки, скрытого поля или записи cookie. Первый пример показывает, к чему может привести подмена этих данных.

Никогда не соединяйтесь с базой данных в роли суперпользователя или владельца. Всегда используйте специальных пользователей с минимумом прав.

Проверяйте ввод на совпадение типа данных с требуемым. PHP включает в себя большое количество проверочных функций, от самых простейших из разделов «Функции для работы с переменными» и «Функции обработки символьного типа», (к примеру is_numeric() и ctype_digit() соответственно) до регулярных выражений Perl («Регулярные выражения, совместимые с Perl»).

Если программа ожидает число, проверяйте данные с помощью is_numeric(), или просто изменяйте тип с помощью settype(), или даже используйте численное представление, выданное sprintf().

Пример: Более безопасная разбивка на страницы

settype($offset, ‘integer’);

  • $query = «SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;»;

// отметим %d в строке форматирования, использование %s бесполезно

$query = sprintf(«SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;»,

$offset);

  • Необходимо предварять любой нечисловой ввод, передаваемый в базу данных, функциями addslashes() или addcslashes().

    В первом примере показано, что кавычек в статической части запроса недостаточно.

Нельзя выводить никакой информации о структуре базы данных ни коим образом.

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

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

Заключение

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

Для извлечения или сохранения любых данных вам необходимо открыть соединение с базой данных, отправить верный запрос, извлечь результат и закрыть соединение. В настоящее время наиболее распространенный стандарт общения — структурированный язык запросов (SQL).

Всегда следует помнить о возможности атаки посредством SQL-запроса.

Очевидно, что сам по себе PHP не может защитить вашу базу данных. Этот раздел документации рассказывает об основах безопасного доступа и управления данными в PHP-скриптах.

Запомните простое правило: максимальная защита. Чем больше потенциально опасных участков системы вы проработаете, тем сложнее будет потенциальному взломщику получить доступ к базе данных или повредить ее. Хороший дизайн базы данных и программных приложений поможет вам справиться с вашими страхами.

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

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

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

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

В зависимости от используемой операционной системы необходимо предусматривать возможность атаки на разнообразные файлы, включая системные файлы устройств (/dev/ или COM1), конфигурационные файлы (например /etc/ или файлы с расширением .ini), хорошо известные области хранения данных (/home/, My Documents), и так далее. Исходя из этого, как правило, легче реализовать такую политику безопасности, в которой запрещено все, исключая то, что явно разрешено.

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

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

Список использованных источников

[Электронный ресурс]//URL: https://liarte.ru/kursovaya/upravlenie-bezopasnostyu-baz-dannyih/

1.Бойченко И. А. Проектирование компонентов доверенной среды реляционной СУБД на основе CASE-технологий [Текст] / И. А. Бойченко — Воронеж, 2014. — 251с.

2.Борри Х. Firebird: руководство работника баз данных [Текст]: пер. с англ. / Х. Бори. — СПб.: БХВ — Петербург, 2012. — 1104с.

3.Броневщук Е. С. Система управления базами данных [Текст] / Е.С. Броневщук, В. И. Бурдаков, Л. И. Гуков. — М.: Финансы и статистика, 2013. — 634с.

4.Гончаров А. Ю. Access 2007. Справочник с примерами [Текст] / А. Ю. Гончаров. — М.: КУДИЦ — ПРЕСС, 2011. — 296с.

5.Дейт К. Введение в системы баз данных [Текст] / К. Дейт 7-е изд. — М.: СПб.: Вильямс, 2013. — 325с.

6. Каленик А. Использование новых возможностей MS SQL Server 2005 [Текст] / А. Каленик. — СПб.: Питер, 2013. — 334с.

7. Конноли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика [Текст] / Т. Конноли, Л Бегг, А. Страган 2-е изд. — М.: Вильямс, 2012. — 476с.

8. Мотев, А. А. Уроки My SQL. Самоучитель [Текст] / А. А. Мотев. — СПб.: БХВ — Петербург, 2013. — 208с.

9. Оппель Э. Раскрытие тайны SQL [Текст]: пер. с англ. / Э. Опель, Джим Киу, Д. А. Терентьева. — М.: НТ Пресс, 2012. — 320с.

10. Промахина И. М. Интерфейсы сетевой СУБД (ПЭВМ) с языками высокого уровня [Текст] / И. М. Промахина — М.: ВЦ РАН, 2011.- 874с.

11. Фуфаев Э. В., Базы данных; [Текст] / Э. В. Фуфаев, Д. Э. Фуфаев — Академия — Москва, 2013. — 320 c.

12. Фрост, Р. Базы данных. Проектирование и разработка [Текст]: пер. с англ. / Р. Фрост, Д. Дей, К. Ван Слайк, А. Ю. Кухаренко. — М.: НТ Пресс, 2007. — 592с.

Приложение А

Рисунок А.1 — Архитектура, используемая при создании Web-страниц

Приложение Б

Рисунок Б.1 — Схема защиты информации