Прикріплення до сайту бази даних

Автор: Пользователь скрыл имя, 21 Ноября 2011 в 18:13, контрольная работа

Краткое описание

Якщо Ви плануєте створювати свій динамічний сайт на платформі Windows, то у Вас швидше за все виникне завдання вибору СУБД для зберігання інформації (з мовою, на якому Ви будете його програмувати, судячи з усього, питань не виникає). Одним з варіантів її вирішення, може виявитися використання MS Access в якості SQL-сервера. Далі буде описано, як у скрипті, написаному на PHP, звернутися до бази даних MS Access. .

Файлы: 1 файл

Чернетка курсової роботи.docx

— 188.56 Кб (Скачать)
  1. Прикріплення  до сайту бази даних

Якщо Ви плануєте створювати свій динамічний сайт на платформі Windows, то у Вас швидше за все виникне завдання вибору СУБД для зберігання інформації (з мовою, на якому Ви будете його програмувати, судячи з усього, питань не виникає). Одним з варіантів її вирішення, може виявитися використання MS Access в якості SQL-сервера. Далі буде описано, як у скрипті, написаному на PHP, звернутися до бази даних MS Access. 
На жаль, в PHP немає вбудованих засобів для роботи з цією СУБД, що, однак не виключає спільної їх роботи - для підключення до бази ми будемо використовувати ODBC. 
Насамперед ми повинні створити так званий DSN Source. Для цього (розглядається варіант, коли у користувача встановлена
​​ОС Windows 2000 Rus) в панелі управління ми повинні вибрати пункт Администрирование, а потім Источники данных (ODBC). Далі, у вікні (мал.1) 

 
 
мал. 1

вибираємо вкладку системный DSN, натискаємо кнопку добавить, вибираємо драйвер MS Access (мал.2)

 
 
мал. 2

 
натискаємо кнопку готово. У полі введення имя источника данных пишемо ім'я, за яким згодом ми зможемо звернутися до нашої бази даних, наприклад, test, потім натискаємо кнопку выбрать і вказуємо, де у нас на диску знаходиться наш файл з БД (мал. 3)

 
 
мал. 3

Потім, якщо в цьому є необхідність, можемо задати ім'я користувача та пароль для доступу до БД через ODBC, натиснувши на кнопку дополнительно (мал. 4)

 
мал. 4

Тепер, коли у нас є джерело даних ODBC, ми можемо скористатися функцією odbc_connect для підключення до нашої бази:

<?

 $x=odbc_connect("test","test","test");

?> 

Щоб передати запит до СУБД, ми можемо скористатися функцією odbc_exec:  

<?

 $res=odbc_exec($x,"create table test (f1 integer, f2 varchar(10))");

 $res=odbc_exec($x,"insert into test (f1,f2) values(1,'qwerty')");

 $res=odbc_exec($x,"insert into test (f1,f2) values(2,'asdfgh')");

?> 

Якщо після виконання цього прикладу відкрити базу test в MS Access, то ми виявимо, що там з'явилася нова таблиця test з полями f1 і f2 цілочисельного і строкового типів відповідно; в таблиці будуть два записи з даними, які були вказані в запиті. 
На жаль, не всі функції для роботи з ODBC коректно працюють з MS Access, наприклад, це функції odbc_num_rows и odbc_fetch_array. Але ці проблеми вирішуються, якщо описати дві наступні функції і використовувати їх замість раніше згадуваних:

<?

function xodbc_num_rows($sql_id, $CurrRow = 0)

{

 $NumRecords = 0;

 odbc_fetch_row($sql_id, 0);

 while (odbc_fetch_row($sql_id))

{

  $NumRecords++;

}

 odbc_fetch_row($sql_id, $CurrRow);

 return $NumRecords;

}

function xodbc_fetch_array($result, $rownumber=-1) {

 if ($rownumber < 0) {

   odbc_fetch_into($result, &$rs);

  } else {

  odbc_fetch_into($result, &$rs, $rownumber);

}

 foreach ($rs as $key => $value) {

   $rs_assoc[odbc_field_name($result, $key+1)] = $value;

}

 return $rs_assoc;

} 

 $res=odbc_exec($x,"select * from test");

 $cnt=xodbc_num_rows($res);

?>

<table border=1 cellspacing=0 cellpadding=4>

<tr><td>f1</td><td>f2</td></tr>

<?

 for ($i=0;$i<$cnt;$i++) {

  $row=xodbc_fetch_array($res,$i+1);

  echo '<tr><td>'.$row['f1'].'</td><td>'.$row['f2'].'</td></tr>';

 }

?>

</table> 
 
 
 
 
 

Результат виконання цього прикладу наведено нижче:

f1 f2
1 qwerty
2 asdfgh

Таким чином, тепер, якщо у Вас виникне завдання підключення до бази MS Access з PHP, Ви зможете сміливо її вирішити в найкоротші терміни. 
PHP - найбільш поширена мова програмування, застосовуваний при розробці CMS.

 

  1. Захист  і взлом баз даних Access
 

    • Стандартні способи  захисту 
        o Захист за допомогою пароля БД 
        o Захист за допомогою пароля користувача
     
    • Нестандартні способи захисту 
        o Зміна розширення файлу 
        o Захист за допомогою пароля БД, що містить нецензурні символи 
        o Захист з модифікацією файлу 
        o Захист зміною версії БД 
        o Захист з використанням електронного ключа 
        o Шифрування значень таблиць
     

Стандартні способи захисту

 
Захист  за допомогою пароля БД

 
Даний спосіб захисту дозволяє встановити пароль на відкриття БД, для всіх користувачів. Для його створення необхідно відкрити файл БД в "монопольному" режимі і вибрати пункт меню Сервіс / Захист / Визначити пароль бази даних. Для роботи з такою базою даних в MS Access буде потрібно вводити пароль. Ось приклад роботи з файлом БД, використовуючи DAO або ADO.

Public Sub TestDAO() 
    Dim mWS As DAO.Workspace 
    Dim mDB As DAO.Database 
    Set mWS = DBEngine.Workspaces(0) 
    Set mDB = mWS.OpenDatabase ("C:\a97.mdb", True, True, ";pwd=123") 
End Sub 
 
Public Sub TestADO() 
    Dim CnDB As New ADODB.Connection 
    CnDB.Open "Provider=Microsoft.Jet.OLEDB.4.0" & ";Data Source=C:\a97.mdb" & ";Jet OLEDB:Database Password=123" 
End Sub

Це теж не самий надійний спосіб захисту баз  даних. Існує достатня кількість  безкоштовних і платних утиліт, що відображають пароль. У тому числі  доступні вихідні коди коду на VB дозволяють прочитати такий пароль. В іншому не все так погано. 
Справа в тому, що деякі розробники вважають, що крім англійської мови, інших мов не існує. Досить включити в пароль російські літери, щоб привести в ступор користувача, який використовує такі програми. Так, вони начебто й розкривають пароль, але те, що вони видають в якості пароля, розібрати неможливо. 
Продовжимо ігри з паролем бази даних. Наприклад, можна використовувати в паролі недруковані символи. В першу чергу цей спосіб націлений на протидію визначення паролів за допомогою спеціальних програм. Стандартний спосіб встановлення і використання пароля БД передбачає його введення з клавіатури в діалоговому вікні. Якщо стоку пароля містить нецензурні символи, то вони не будуть коректно відображені програмою відкриває паролі БД. З іншого боку цей пароль можна ввести в діалоговому вікні при відкритті БД в MS Access. 
Якби пароль містив символи табуляції, Esc або Enter, то стандартним чином Ви б не змогли їх ввести у віконце введення пароля. Спосіб заснований на тому, що пароль БД формату Access 2000 і 2002-2003 - текстовий рядок у форматі Unicode (в Access 97 - ANSI). При цьому немає ні яких обмежень на її вміст. У специфікації баз даних і в довідці по DAO 3.60 зазначено, що максимальна кількість символів в паролі - 14. Але насправді їх може бути 20. При цьому і сам Access 97 не допускає введення рядків пароля більше 14 символів. У специфікації Access 2003 також сказано про 14 символів, але програма допускає введення всіх 20. Також можливе використання недрукованих символів, що приводить більшість програм зламували паролі в ступор. 
Для установки такого пароля буде потрібно застосувати спеціальну програму, яка використовує метод CompactDatabase бібліотек ADOX або DAO. Але, так би мовити, проти всього можна знайти лом. І такий захист розкривається.

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

Дізнатися або змінити пароль БД можна, не вдаючись до допомоги спеціальних програм. В Access 97 пароль виходить складанням за XOR пароля з 20 байтной послідовністю. Значення цих байт можна отримати з будь-якого не захищеного паролем mdb файлу. Починаючи з Access 2k, у зв'язку з використанням Unicode, для зберігання 20 символів пароля відведені 40 байт. При шифруванні також використовується додавання за XOR, але для отримання послідовності байт відповідної порожньому паролю необхідно створити файл з датою досліджуваної БД. Отримані байти можна вписати в досліджуваний файл і обнулити пароль, або скласти їх з аналогічними байтами досліджуваного файлу і отримати значення пароля. Але все це вже вимагає наявність певних знань і досвіду, так, що є шанси на те, що цікавому користувачеві набридне експериментувати.

Захист  за допомогою пароля користувача

Даний спосіб дозволяє ввести додатковий рівень обмежень, пов'язаних з роботою БД Access. Заснований на створенні файлу  робочих груп, в якому визначаються імена користувачів, їхні паролі і  права на роботу з різними об'єктами БД.

 
Послідовність дій для створення  захищеного файлу:
 

  • Створення нового файлу робочих груп. 
    Для цього в 97-2000 Access запускається програма WRKGADM.EXE, а в 2003 Access необхідно вибрати пункт меню "Сервіс / Захист / Адміністратор робочих груп". У адміністратора тиснемо кнопку "Створити ", вказуємо ім'я, організацію та код групи. Вказуємо ім'я і розташування створюваного файлу. Наприклад: 
    Ім'я: test_Імя 
    Opгaнізaція: ~ 
    Кoд paбoчeй гpyппи: cтpoчкa 20 cімвoлoв. 
    Фaйл paбoчeй гpyппи: C:\test\gr.mdw
  • Створення ярлика, для запуску ms Access з використанням створеного mdw файлу. Ярлик      повинен містити рядок: [шлях до MSACCESS.EXE] / WrkGrp [шлях до файлу mdw]. Наприклад: "C: \ Program Files \ MSOffice2003 \ OFFICE11 \ MSACCESS.EXE" / WrkGrp C: \ test \ gr.mdw
  • Запустивши Access c допомогою цього ярлика необхідно відкрити пункт меню "Сервіс / Захист / Користувачі та групи". У діалоговому вікні необхідно створити нового користувача і додати його до групи "Admins". Наприклад, був створений "test_Пользователь" з кодом "987654321"
  • Тепер необхідно відкрити Access від імені створеного користувача. Для цього необхідно додати в створений ярлик рядок: / user [ім'я користувача]. Наприклад: "C: \ Program Files \ MSOffice2003 \ OFFICE11 \ MSACCESS.EXE" / WrkGrp C: \ test \ gr.mdw / User test_Пользователь
  • Запускаємо Access c допомогою цього ярлика. Тепер створеному користувачеві необхідно присвоїти пароль. Це робиться в тому ж діалозі "Користувачі та групи". Припустимо користувачеві "test_Пользователь" привласнений пароль "test_Пароль". Далі, необхідно створити нову БД. При цьому власником цієї бази, а також всіх створюваних або імпортованих об'єктів (таблиць, запитів тощо) буде користувач ім'я якого було зазначено в ярлику.
  • Після того, як БД буде створена бажано видалити "Admin" з групи "Admins" і відібрати у групи "Users" права на об'єкти БД і на відкриття бази.
  • Додаємо в ярлик назва захищеної БД. Наприклад: "C: \ Program Files \ MSOffice2003 \ OFFICE11 \ MSACCESS.EXE" C: \ test \ db2k_test.mdb / WrkGrp C: \ test \ gr.mdw / User test_Пользователь / pwd test_Пароль

Информация о работе Прикріплення до сайту бази даних