ДОСТУП К БАЗАМ ДАННЫХ ПОСРЕДСТВОМ CGI-СКРИПТА, НАПИСАННОГО НА ЯЗЫКЕ ESQL
Лабораторная работа 9
ДОСТУП К БАЗАМ ДАННЫХ ПОСРЕДСТВОМ CGI-СКРИПТА, НАПИСАННОГО НА ЯЗЫКЕ ESQL/C
Цель работы
Ознакомиться с основными понятиями разработки CGI-скриптов с целью написания простейших CGI-программ доступа к базам данных с использованием языка ESQL/C.
Содержание работы и методические указания к ее выполнению
Для выполнения работы необходимо
Общая схема доступа к базам данных с использованием CGI-скриптов имеет вид:
[ZEBR_TAG_P ALIGN="JUSTIFY">Спецификация CGI описывает формат и правила обмена данными между программным обеспечением WWW-сервера и запускаемой программой и представляет собой общую среду и набор протоколов для внешних приложений, которые используются при взаимодействии с Web-сервером.
CGI-программа (CGI-скрипт) представляет собой программу локальной операционной системы сервера (в двоичном виде или в виде программы для интерпретатора), которая может быть вызвана из среды WWW. Для инициирования CGI достаточно, чтобы в URL-адресе был указан путь до запускаемой программы. Программное обеспечение WWW-сервера исполняет эту программу, передает ей входные параметры и возвращает результаты ее работы, как результат обработки запроса, клиенту.
С целью облегчения администрирования CGI-программ, а также для удовлетворения требованиям безопасности CGI-программы группируются в одном или нескольких явно указанных серверу каталогах. При выполнении лабораторной работы в качестве таких каталогов выступают каталоги cgi-bin в домашней директории пользователя или в директории public_html. При этом
Общепринятым средством организации интерфейса с пользователем в WWW-среде является HTML-форма. Если целью формы является сбор данных для последующей передачи их серверу, то такая форма должна обязательно содержать:
Форма задается в HTML-документе с помощью тега FORM. Все элементы управления находятся внутри контейнера <FORM>...</FORM>.
<FORM action="http://.......cgi" method="GET"|"POST" enctype="encodingType" name="formName" target="windowName" onSubmit="Handler"> ... Поля формы ...
</FORM>
Среди атрибутов HTML-формы для целей CGI-программирования наиболее важны
Основными методами являются методы GET и POST. В зависимости от метода (GET или POST) данные формы будут помещены в переменную окружения QUERY_STRING или поданы на стандартный ввод STDIN. В случае метода GET, используемого по умолчанию, данные добавляются в конец URL-адреса и отделяются знаком "?". С помощью метода POST информация, введенная пользователем, посылается непосредственно в сценарий с помощью выходного потока сервера STDOUT и входного потока STDIN вашего сценария. Преимуществом использования метода POST является неограниченность длины передаваемого сообщения и безопасность передачи по сравнению с GET.
При нажатии некоторой кнопки на форме HTML документа происходит передача данных броузером серверу, на котором находится программа-обработчик данных. Основная работа такой программы заключается в:
Обработка CGI-скриптом данных формы составляет шаблонную часть скрипта.
Данные, веденные в форме, передаются CGI-модулю в виде последовательности символов через входной поток (метод POST) или переменную CGI-окружения (метод GET) в формате:
имя=значение&имя1=значение1&...&имяN=значениеN,
где имяi - значение параметра name из элемента HTML-формы, значениеi - введенное или выбранное значение независимо от его типа.
Алгоритм обработки передаваемой в CGI-скрипт строки данных состоит в разделении ее на пары имя=значение и декодирования каждой пары, учитывая, что все пробелы в введенных значениях в форме сервером были заменены символом "+" и символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.
После шаблонной части CGI-скрипта следует содержательная часть, в которой можно анализировать полученные данные, обращаясь, при необходимости, к различным таблицам баз данных. При написании CGI-скрипта на языке ESQL/C работа с базой данных ведется средствами встроенного языка SQL и главных переменных, через которые передаются и возвращаются данные к серверу баз данных. Результаты обработки данных, полученных из базы данных, а также другие информационные сообщения передаются функцией printf() в выходной поток с учетом форматирования HTML-документа.
CGI-скрипт, запускаемый из среды WWW, должен содержать информацию о сервере баз данных в своем теле. Эта информация состоит в задании в CGI-скрипте системных переменных, определяющих каталог с программным обеспечением сервера, имя сервера, параметры перекодировки и прочие параметры.
Важной особенностью работы с базой данных посредством CGI-скрипта является обеспечение достаточных условий безопасности в отношении данных.
В том случае, когда любой пользователь без ограничений может иметь доступ к данным, средствами программы dbaccess, либо средствами иного программного приложений владелец базы данных SQL-оператором
Grant connect to nobody
предоставляет пользователю операционной системы nobody минимальные права, в том числе в отношении баз данных. Это позволяет при написании CGI-скрипта использовать простейший вариант подключения к серверу баз данных без проверки индивидуальных полномочий пользователя.
$Connect to 'database@server_name';
После окончания работы с приложением владелец базы данных должен отобрать полномочия у пользователя nobody.
Revoke connect from nobody
В том случае, когда необходимо контролировать доступ того или иного пользователя к базе данных или когда разные пользователи обладают разными полномочиями в отношении доступа к данным, следует завести пользователя на сервере баз данных, дать ему требуемые полномочия в отношении тех или иных действий над используемыми таблицами посредством SQL-оператора Grant, после чего каждый раз при обращении проверять эти полномочия. При этом CGI-приложение должно знать и каким-либо образом хранить все имена и пароли и полномочия пользователей, которым разрешен доступ к данным.
$Connect to 'database@server_name' user 'name' using $parol;
Последовательность выполнения лабораторной работы
Требования к разрабатываемой программе
Разрабатываемые программы должна удовлетворять следующим требованиям:
Варианты заданий
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Контрольные вопросы