Автор: Пользователь скрыл имя, 21 Ноября 2011 в 18:13, контрольная работа
Якщо Ви плануєте створювати свій динамічний сайт на платформі Windows, то у Вас швидше за все виникне завдання вибору СУБД для зберігання інформації (з мовою, на якому Ви будете його програмувати, судячи з усього, питань не виникає). Одним з варіантів її вирішення, може виявитися використання MS Access в якості SQL-сервера. Далі буде описано, як у скрипті, написаному на PHP, звернутися до бази даних MS Access. .
Якщо Ви плануєте
створювати свій динамічний сайт на платформі
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"
?>
Щоб передати запит
до СУБД, ми можемо скористатися функцією
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($
}
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></
<?
for ($i=0;$i<$cnt;$i++) {
$row=xodbc_fetch_array($res,$i
echo '<tr><td>'.$row['f1'].'</td><
}
?>
</table>
Результат виконання цього прикладу наведено нижче:
|
Таким чином, тепер,
якщо у Вас виникне завдання підключення
до бази MS Access з PHP, Ви зможете сміливо її
вирішити в найкоротші терміни.
PHP - найбільш поширена мова програмування,
застосовуваний при розробці CMS.
•
Стандартні способи
захисту
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.
Set mDB = mWS.OpenDatabase ("C:\a97.mdb", True, True, ";
End Sub
Public Sub TestADO()
Dim CnDB As New ADODB.
CnDB.Open "Provider=
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. Але, так би мовити, проти всього
можна знайти лом. І такий захист розкривається.
Дізнатися або змінити пароль БД можна, не вдаючись до допомоги спеціальних програм. В Access 97 пароль виходить складанням за XOR пароля з 20 байтной послідовністю. Значення цих байт можна отримати з будь-якого не захищеного паролем mdb файлу. Починаючи з Access 2k, у зв'язку з використанням Unicode, для зберігання 20 символів пароля відведені 40 байт. При шифруванні також використовується додавання за XOR, але для отримання послідовності байт відповідної порожньому паролю необхідно створити файл з датою досліджуваної БД. Отримані байти можна вписати в досліджуваний файл і обнулити пароль, або скласти їх з аналогічними байтами досліджуваного файлу і отримати значення пароля. Але все це вже вимагає наявність певних знань і досвіду, так, що є шанси на те, що цікавому користувачеві набридне експериментувати.
Захист за допомогою пароля користувача
Даний спосіб дозволяє ввести додатковий рівень обмежень, пов'язаних з роботою БД Access. Заснований на створенні файлу робочих груп, в якому визначаються імена користувачів, їхні паролі і права на роботу з різними об'єктами БД.
Послідовність дій для створення
захищеного файлу: