швидкістьроботита
зверненнядо данихнабагатовище, ніжв
інших способахреалізаціїзберіганнявеликогообсягуінформації;
завдякипростотісинтаксисуSQL-команд,
зростаєзручністьаналітики.Миможемошвидковиділятилише
необхіднінамданічи осередкивтаблицях,
бездовгогопошуку вперелікунаявноїінформації.
У
системі, що створюється, всяінформаціяпро
користувачів, питанняйвідповідінатестовізавданнятабагатоіншоїінформаціїбудезберігатисяубазіданих.
Томуважливорозглянутиосновніпринципипобудовибазданихвцілому,
зподальшимвикористаннямотриманихзнаньпристворенні
проекту.
Основною
особливістюреляційнихбазє зберіганнявсіхданиху
виглядітаблиць. Кожназтакихтаблицьмаєвласнеім'ята,
у своючергу, складаєтьсязрядківі стовпців,
анаїх перетинірозташовуютьсязначення.Всі
стовпчикитакож мають своєім'яі типданих
івсізначення, розташовані підстовпцем,
будутьматитипданих, присвоєнийстовпцю[16].
Самітаблиці
представляютьсобоюнаборивідомостейпро
схожіоб'єкти, при цьому вкожному рядкурозміщуєтьсякоженокремийоб'єкт,
а значенняу стовпцяхвідповідаютьатрибутуабохарактеристикамиоб'єкта.
Рядкина відмінувідстовпців немаютьіменабопорядковихномерівтаоб'єкти,
відповіднірядках, можутьрозташовуватися
вдовільномупорядку. З огляду на це, якщо
потрібнознаходженнягрупиоб'єктівабо
одного конкретного, вибіркавідбуваєтьсяза
одним або кількомазаданиматрибутам,
якіпритаманніцьомуоб'єктуабогрупі.
Дляцихжецілейрозробникамивикористовуєтьсяпервиннийключ,
тобтонабірстовпців, якправило, мінімальний,
якийоднозначновизначаютьрядокта, отже,
об'єкт. Такийключунікальний длякожного
рядкавтаблиці, відповідно йогозначеннянівякомуразіне
повинноповторюватисявіншихрядкаху стовпцях,
що визначають первиннийключ. Ключтакожвикористовуєтьсядляствореннязв'язківміжтаблицями.
Завдякизв'язкамутворюєтьсяціліснатаєдинаструктура,
завдякичомуможливоздійснювативилучення
інформаціїодночасноз декількохтаблицьвсьогооднимзапитом.
Прицьому можливо уникнутирядупроблем,
наприклад, дублюванняінформаціїчи інтенсивного
зверненнядо даних, що знаходяться в різнихтаблицях,
однактіснопов'язаніміжсобою. Інформація
воднійтаблиці, якадозволяєвизначитипов'язанузнеюрядокв
іншій, буденазиватисяпосиланням, аполя,
вякихвона розміщена- зовнішнімиключами.
Першатаблицябудедочірньою,а, отже, друга
– батьківською[19].
Розрізняєтьсятри
видизв'язків:
«один
до багатьох»;
«один
доодного»;
«багато
до багатьох».
Якправило,
зв'язок«один до багатьох» єнайбільшпоширеним
тау ньому відразудекількарядківпершої
таблиціпосилаютьсянарядокдругої таблиці.
Дляцьогов дочірнійтаблицідодаєтьсязовнішнійключ,
якийпредставляєсобоюстовпецьабо декілька
стовпців, вякихзберігаються значенняпервинногоключатаблицібатька.
Узв'язку«один
до одного »один рядокпершої таблиціпосилаєтьсянаодин
рядокіншої,абонавпаки. Наприклад, цеможнавикористовуватидля
зберігання двохваріантівданих: одинєбільшкоротким,
адругийбільшрозширеним.Принеобхідностіможнаперетворитидвітаблицізізв'язком«один
до одного »водну, однак, використання
двохтаблицьнайчастіше все жвиправдано.
В іншутаблицюможутьміститисятакіполя,
якічастозалишаютьсянезаповненими, крімтого,
цекорисноз метоюзахистуінформації -данірозміщені
віншій таблиціможутьбутизакритілюдям,
безправдоступу в них.
Принципорганізації
зв'язку«один до одного»ідентичнийпринципуузв'язку«один
до багатьох», в дочірнійтаблицітакождодаєтьсязовнішнійключз
посиланнямнатаблицюбатька. Однакможнаорганізуватизв'язоквикористовуючи
одночаснопервинніключіобохтаблиць,
причому значенняключаповиннібутиоднакові.
Зв'язок«багато
до багатьох» має на увазі ставленнядекількохполіводнієїтаблицідодекількох
полівіншої. Реалізуватицебезпосередньо
вреляційноїбазіважко, тому використовуєтьсяпроміжнатретятаблиця.
Яквидно,
найчастішебазаданихможематискладнуі
заплутануструктуру звеликою кількістюзначеньта
зв'язків, іу випадкувиникненнянеполадокчи
помилок вцій структурі, можевідбутися
порушеннявиконаннявсіхосновнихфункційтавідновлення
займебагаточасуй сил. Дляцьогобуловведенопоняттяцілісностіданих,
яке відповідає за те, щобвбазі небулопротирічта
помилокузв'язкахі збереженихзначеннях.Базовимивимогамипризбереженніцілісності
єпосилальнацілісністьі цілісністьсутностей.Цілісністьсутностейпередбачає
наявністьпервинногоключа, який не повторюється,
апосилальнацілісністьвказуєнате, щов
дочірнійтаблиці незберігаєтьсязначень,
якихнемаєбатьківськатаблиця, тобтовсі
посиланнявказуютьнаіснуючогоадресата.Якщовимоги
цілісностіпорушені, тобазавважається
частковонепрацездатноюйне можнагарантуватикоректноїроботивній,
томуціпоказникидужеважливідляуспішноїроботи
[7].
РОЗДІЛ
3
РОЗРОБКА
ЗАХИЩЕННОЇ ВІД НЕСАНКЦІОНОВАНОГО
ДОСТУПУ СИСТЕМИ
ІНТЕРНЕТ-ТЕСТУВАННЯ
Питаннязахистусистемиавтоматизованоготестуванняунашомувипадкувключаєв
себе відразукількапунктів:
захистсистемивіднавмисного
абовипадкового їїпошкодження і порушенняїїосновнихфункцій;
захиствід
розкраданнябазиданихз питаннямиабоіншоїнепублічноїінформації,
зокрема, про зареєстрованихкористувачів;
закритістьсистемивіднаданнясвоїхпотужностейтретім
особам, що не відносяться до даного навчальногозакладуінавчального
процесу в цілому, якщо, звичайно, не виникнетака
приватнанеобхідність.
Завдякивіддаленомурозміщенню
системинавеб-сервері, ступіньзахищеностів
значній мірізбільшується у всіхвищезазначенихпунктах.
З
причинивіддаленогорозміщенняавтоматизованоготестування,
нанесення ушкодженьїїпрацездатностіє
досить важким, втомучислій навмисне.
Уразі реалізаціїнашогопроекту у виглядіприкладноїпрограми,
шкодуможнабулобзавдатинавітьпростимвидаленням
частинифайлівз жорсткогодискаабо
внесеннямнебажанихкоректив. Роботамоглаускладнитисячерезапаратніособливості
комп'ютера, застарілеобладнання абопрограмнезабезпечення,
роботуфоновихпрограмабо програм-шкідників,
наприклад, комп'ютернихвірусів.
Прирозміщенні
сайтуна віддаленомусервері, доступдо
редагуванняйогофайлівмаєсуворообмежене
колоосіб. Самесервернепрограмнезабезпеченнябільш
вузькоспрямоване, ніжкористувальницькіопераційнісистеми,
щодозволяє нетільки збільшитишвидкодіювиконанняпрограми
проведеннятестування, а йзапобігти появіпрограм-шкідників.
На відмінувід користувальницькихопераційнихсистем,
розрахованихнашироке колокористувачівбезвузькоспеціалізованоїкомп'ютерної
освіти, в сервернихсистемахстроговстановлюютьсяправа
на виконаннявсіхфайлів, авимогищодо
захисту інформації тафайлівнабагатовище.
Важливоюособливістюєтойфакт,
щопритакійархітектурічи ненайважливішачастина
сайту -базаданих, такяк решта файлівпри
бажаннілегкокопіюється івідновлюється
і, якправило, у випадкузакінченоїпрацездатноїсистемирідкопіддається
змінам. Томунавітьприпошкодженнівиконуваних
файлівсайту, можнабез зусильповернутийомупрацездатність.Базаданихє
динамічнооновлюванимджерелом ізміни
донеївносятьсяпрактичнопостійно прироботізсайтомкористувачів
всіхкатегорій.Уцьомувипадку на допомогуприходятьмеханізмирезервногокопіюваннябазиданих.
Якправило, більшість хостинг-провайдерівсамостійноналаштовуютьмеханізм
резервногокопіювання ібазивсіхкористувачівзберігаються
зпевнимінтервалом (наприклад, раз надобу).
Однакпристворенні сайтуможнасамостійновключити
такиймеханізм вналаштуванняхсервераабонавітьпрописатив
початковомукоді, щобезпроблем додатковореалізується
у разівиникненнятакої необхідності.
Параметризакритостібазивідрозкраданнятежзначноюміроювизначаютьсявіддаленимрозміщеннямпроекту,
аотжеі бази. Часткову відповідальністьзавіддаленепроникненнязловмисників
такожнесенасобіхостинг-провайдер, однакі
припрограмуванніслідзапобігати всіможливілазівки,
якимиможутьскористатися.Великачастинапровиниза
розкраданнябазиданих, зазвичай,лежитьсамена
плечахтворців, крімтогосайтможебутирозміщений
інавласному сервері, відповідно, в цьомувипадкумибудемо
повністювідповідальнізайогоконфігурування.
Прирозробці
свогопроектуявідштовхувавсявід максимальноїзахищеностіпрограмованимизасобамисайту,
не озираючисьнаможливеналаштуванняхостінг-серверу,
зметоюзабезпеченнямаксимальної безпекивсіх
даних.Присутній йтакзваний«захист віддурня»,
коликористувачвипадково чинавмисно
вводитьтакі дані абовиробляє рядтакихманіпуляцій,
якіможутьпризвестидо некоректної роботисайтуабонавіть
відкритилазівкидля несанкціонованогопроникнення.
Використанівсівідомімеханізмидлязапобіганняsql-ін'єкцій,тобтонавмисноговпровадженняшкідливогоsql-коду.Якправило,таке
впровадженняздійснюється за допомогоюsql-запитівідаєможливістьатакуючомузловмисниковізробитимодифікаціюпочатковоїбазисайтута,згодом,
ймовірно навітьотриматиповнийконтрольнадсайтомзможливимвидаленнямінформації,що
зберігаєтьсянаньому,впровадженням програм-шпигунів
абовірусів.Заразценайбільшпоширенийспосібвзломусайтівтапрограм,тому
йому булоприділено максимальнуувагу
іпринаписанніпрограмногокоду,той ретельноаналізувавсяна
ймовірністьнекоректноїобробкикоманд,що
подаються.Всіможливіпомилкибуливчасноусунені,і
наданиймоментможнавпевненосказати,щосистемаавтоматизованоготестуваннянадійнозахищенавідтакогородуатакхакерів.
Як
захід захистувіддоступудосистемиавтоматизованоготестуваннятретіх
осіб, що не мають відношення до навчальногопроцесууніверситету,
вякомупрацюєсистема, булавведенасистемазакритоюреєстрації.Новийкористувач
безпосередньопісляреєстрації приспробізаходу
в системубудебачити повідомленнязгіднорисунку3.1:
Рис.
3.1 – Відмовавдоступінепідтвердженомукористувачеві
Відразупісляперевірки
реєстраційнихданих, у разіїхкоректностіта
необхідності реєстраціїцієї особи, акаунтбуде
підтвердженийадміністрацією, післячого
користувачотримаєповнийдопусквсистемуурамкахсвоїхправ.
Такасистемазакритоїреєстраціїв
першучергу запобігаєдопускусторонніхлюдей,
якіможутьскористатисянаявниминапрацюваннямисистеми
для створеннявласного проекту-плагіату,
атакож провестикопіюванняпитаньтавідповідейз
бази. Крімтого, цезахищаєвідфальсифікацій
збоку студентівтаучнів-при закритійреєстраціївиключенийваріантмножинногопроходженнятестураззаразом,
зметоюпошукуправильнихвідповідей.Якщо
зареєстрованийученьпідетакимшляхом,
всястатистика йогопроходженьбудедоступнавикладачеві,
внаслідокчогобудутьпроведені відповіднідисциплінарнісанкції.
Требазауважити, щонаданиймоментправом
реєстраціїновихкористувачівволодіє
виключноадміністраціясайту, але невикладацькийскладтаіншіучні.
Можливо, такасуворасистемана першихпорахтрохи
сповільнитьпроцесреєстрації новихкористувачів,
протенадаліокупитьсебетаобмежитьдоступнебажанихосіб.
Такимчином,
реалізованийвданомуавтоматизованомутестуванніперелікзасобівзахистуяксамоїпрацездатностісистеми,
такйінформації, що зберігається в ній,
сприяєїїстабільній роботіі дозволитьсконцентрувативсісилинапроцесіоцінкизнань.
Базаданихвнашомупроектієоднієюз
основнихчастині самевній зберігаютьсявсіосновнідані,
до неїйдутьпостійні запитисайтусистеми,
томупитаннястворення зручноїйхорошоїбазидужеважливе.Ранішерозглядалисяосновніпринципиствореннябазданих,
атакожMySQL, тепержерозглянемо вжестворенубазутаїїтаблиці.
Загаломнашабаза
складаєтьсязшеститаблиць:
«Answer»
(«Відповідь»);
«Categories»
(«Категорії»);
«Client»
(«Клієнт»);
«Question»(«Питання»);
«Statistics»(«Статистика»);
«Theme»
(«Тема»).
Таблицяз
клієнтами єнайоб'ємнішоювнашійбазіймає
наступнуструктуру:
Таблиця
3.1
Таблиця
«Клієнт»
№ |
Назва поля |
Тип |
Опис |
1 |
id |
int(11) |
Ідентифікаторрядкатаблиціта
їїпервиннийключ |
2 |
first_name |
varchar(255) |
Ім'якористувача |
3 |
last_name |
varchar(255) |
Прізвищекористувача |
4 |
login |
varchar(255) |
Логіндлявходувсистему |
5 |
password |
varchar(255) |
Парольдлявходувсистему |
6 |
date |
varchar(255) |
Датареєстрації |
7 |
post |
varchar(101) |
Категорія користувача |
8 |
university |
varchar(255) |
Вищий навчальнийзаклад |
9 |
course |
varchar(255) |
Номеркурсу |
10 |
group |
varchar(255) |
Номергрупи |
11 |
faculty |
varchar(255) |
Факультет |
12 |
speciality |
varchar(255) |
Спеціальність |
13 |
checked |
binary(1) |
Вказує, чипідтвердженкористувачадміністрацією |