Формы Запроса

Введение

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

Запросы исходят от пользователя, оснащенного программой The Bat! с установленными шаблонами форм (файлами с расширением TBC, описывающими свойства формы). Такой пользователь называется клиентом. Перед тем, как сделать запрос, программа “The Bat!” предлагает клиенту заполнить форму подобную тем, которые вам наверняка приходилось заполнять на вебе. Программа обработки запросов клиента, называется сервером. Данные, занесенные клиентом, The Bat! автоматически преобразует в сообщение со строго определенными полями, при необходимости подпишет цифровой подписью и/или зашифрует, и отправит по электронной почте на сервер (e-mail адрес сервера уже есть в шаблоне формы). Система взаимодействия клиента и сервера посредством запросов и ответов называется The Bat! клиент-сервер. Один цикл запрос-ответ в системе клиент-сервер называется трансакцией.

Система клиент-сервер предназначена для удаленного доступа к информации и управления ей в режиме off-line, выдерживая требования безопасности. Область применения системы: управление банковскими счетами, бронирование авиабилетов, резервирование гостиничных номеров и т.д. Для безопасности трансакций на транспортном уровне используется шифрование и электронная подпись (алгоритмы RSA/IDEA/MD5), соответствующие RFC-1991. Серверная программа зависит от специфики запроса; банк, Интернет-магазин или агентство по бронированию авиабилетов используют разные серверные программы; клиент же, с помощью "The Bat!", может обращаться к услугам всех трех организаций одновременно.

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

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

Формат шаблона формы

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

Шаблон описывает свойства окна экранной формы, которую заполняет клиент, атрибуты сообщения, в котором будет отправлен запрос, и переменные запроса. Каждая строка шаблона содержит одно ключевое слово, за которым следуют один или несколько параметров. Если строка начинается с символа ‘;’, то такая строка рассматривается как комментарий.

Свойства окна и атрибуты сообщения

Ключевое слово MSG предназначено для описания свойств окна и атрибутов сообщения, остальные ключевые слова используются для “набивки” формы. Ключевое слово MSG может иметь следующие параметры: FORMTITLE (заголовок окна форму запроса, строковое значение); FORMWIDTH (ширина окна; числовое значение); FORMHEIGHT(высота окна; числовое значение); AREAWIDTH (ширина области ввода внутри окна; числовое значение); AREAHEIGHT (высота области ввода внутри окна); TO (e-mail адрес сервера для отправки сообщения; строковое значение);SUBJ (Поле Subject сообщения; строковое значение); PRIORITY (поле Priority сообщения; строковое значение); ENCRYPT (зашифровать сообщение перед отправкой; логическое значение: ON или OFF); SIGN (подписать сообщение перед отправкой; ON или OFF).

Содержимое запроса

Данные, занесенные пользователем в поля экранной формы, представляют собой содержимое запроса. Как только пользователь нажал OK, The Bat! помещает содержимое запроса в тело сообщения, и, если это указано в шаблоне, подпишет сообщение цифровой подписью и/или зашифрует, после чего отправит его по электронной почте на сервер (e-mail адрес сервера тоже указан в шаблоне). Тело сообщения выглядит как одна строка неограниченной длинны, содержащая строковые переменные. Переменные отделяются друг от друга символом “&”. Имена переменных описаны в шаблоне, значения переменных берутся из полей экранной формы, заполненной клиентом. В строке запроса, передаваемой серверу в теле сообщения, имя переменной отделяется от ее значения символом “=”. Предположим, запрос содержит две переменные с именами servicetype и accountnumber; переменная servicetype содержит значение “getaccountlog”; а переменная accountnumber - значение “849780094”, в этом случае телом сообщения будет являться следующая строка:

servicetype=getaccountlog&accountnumber=849780094

Такой способ формирования строки запроса является совместимым с RFC1866 (раздел 8.2.1, тип application/x-www-form-urlencoded)

Имена и значения переменных могут содержать любые символы, но определенные символы должны заменяться по следующим правилам: пробельный символ заменяется на символ ‘+’, все остальные символы, кроме цифр и букв, заменяются на “%HH” (символ “процент” и две шестнадцатеричные цифры, представляющие ASCII-код заменяемого символа).

Обзор элементов формы

Экранная форма может содержать такие графические элементы, как строки ввода, списки, переключатели, метки и кнопки. Все эти элементы описываются в шаблоне с помощью ключевых слов: EDIT (однострочное окно ввода), MEMO (многострочное окно ввода), CHECKBOX (переключатель), LISTBOX (список заранее определенных строк, одна или несколько из которых могут быть выбранными), COMBOBOX (выпадающий список строк). Кроме того, имеется специальная “невидимый” элемент HIDDEN (пользователь не может изменить значение переменной, образуемой этим элементом), а также видимый элемент LABEL, который не образует переменной и используется как метка, текст которой выводится на экране. Для управления формой имеются элементы SUBMIT (кнопка, при нажатии которой происходит отправка формы) и CANCEL (кнопка отмены).

Обзор параметров элементов

Графические элементы могут иметь следующие параметры: X, Y (координаты верхнего левого угла элемента в пределах окна; координаты увеличиваются сверху вниз, слева направо), WIDTH, HEIGHT (ширина/высота элемента; у всех элементов ширина и/или высота либо задана по умолчанию, либо вычисляется в зависимости от размеров шрифта, поэтому эти два параметра могут быть опущены), NAME, VALUE (имя переменной и значение переменной по умолчанию; для всех элементов кроме LABEL, SUBMIT и CANCEL). Кроме того, элемент EDIT может иметь параметр MASK (форматированный ввод), элементы LISTBOX и COMBOBOX – параметр ITEM (элемент списка), а элементы LABEL, CHECKBOX, SUBMIT и CANCEL - параметр CAPTION (надпись). Для элемента LABEL допустимы параметры FOCUSNAME (имя элемента, к которому привязан LABEL; при щелчке мышки в области элемента LABEL или нажатии горячей клавиши, курсор, или фокус ввода, будет перенесен на элемент, к которому привязан LABEL); JUSTIFY (выравнивание текста по центру или левому/правому краю); SHOWACCEL (использовать ли символ “&” как маркер горячей клавиши).

Перечень элементов

EDITОднострочное окно ввода. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE, MASK.
MEMO

Многострочное окно ввода. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE.

CHECKBOX

Переключатель. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE.

LISTBOX

Список заранее определенных строк, одна или несколько из которых могут быть выбранными. Обязательные параметры: X, Y, NAME; допустимые параметры: ITEM, WIDTH, HEIGHT.

COMBOBOX

Выпадающий список строк. Обязательные параметры: X, Y, NAME; допустимые параметры: ITEM , WIDTH, HEIGHT.

HIDDEN

“Невидимый” элемент, образующий переменную. Обязательные параметры: NAME, VALUE.

LABEL

Метка. Обязательные параметры: X, Y, CAPTION, допустимые параметры:, WIDTH, HEIGHT, FOCUSNAME, JUSTIFY, SHOWACCEL.

SUBMIT

Кнопка, при нажатии которой происходит отправка формы. Обязательные параметры: X, Y, допустимые параметры:, WIDTH, HEIGHT, CAPTION.

CANCEL

Кнопка отмены. Обязательные параметры: X, Y, допустимые параметры:, WIDTH, HEIGHT, CAPTION.

Перечень параметров элементов

X

Горизонтальная координата левого края элемента в пределах окна; координаты увеличиваются слева направо. Является обязательным параметром для всех видимых элементов: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

Y

Вертикальная координата верхнего края элемента в пределах окна; координаты увеличиваются сверху вниз. Является обязательным параметром для всех видимых элементов: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

WIDTH

Ширина элемента. Ширина всех видимых элементов уже задана по умолчанию, поэтому этот параметр может быть опущен. Применяется во всех видимых элементах: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

HEIGHT

Высота элемента. Высота многострочных видимых элементов (LISTBOX, MEMO) уже задана по умолчанию. Высота однострочных элементов (EDIT, LABEL, CHECKBOX) вычисляется в соответствии с размером шрифта. Применяется во всех видимых элементах: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

NAME

Имя переменной. Является обязательным параметром для всех элементов, которые формируют переменные: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX. Строковое значение.

VALUE

Значение переменной по умолчанию. Является обязательным параметром для элемента HIDDEN, применяется также в EDIT, MEMO и CHECKBOX. Строковое значение.

CAPTION

Надпись. Является обязательным параметром для элементов LABEL и CHECKBOX, применяется также в SUBMIT и CANCEL. Строковое значение.

FOCUSNAME

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

JUSTIFY

Выравнивание текста надписи. Может использоваться только как параметр ключевого слова LABEL. Допустимые значения: LEFT (выравнивать по левому краю), RIGHT (выравнивать по правому краю), CENTER (выравнивать по центру).

SHOWACCEL

Использовать ли символ “&” как маркер горячей клавиши. Может использоваться только как параметр ключевого слова LABEL. Допустимые значения – ON или OFF.

Ниже приведено содержимое типичного TBC-файла, который используется для получения сводки курсов валют на определенный период. Экранная форма содержит выпадающий список для выбора наименования валюты (COMBOBOX) и два поля ввода дат (EDIT).

-----BEGIN PGP SIGNED MESSAGE-----

MSG FORMTITLE="Currency Rate Request"
MSG TO="Client-Bank <client-bank@bank.com>"
MSG SUBJ="Client-Bank"
MSG PRIORITY="High"
MSG FORMWIDTH=260
MSG FORMHEIGHT=190
MSG ENCRYPT=ON
MSG SIGN=ON

HIDDEN NAME="service" VALUE="getcurrencytrend"

LABEL CAPTION="&Currency"  X=16 Y=8 FOCUSNAME="iso"

COMBOBOX NAME="iso"   X=16 Y=24 WIDTH=120

COMBOBOX NAME="iso"   ITEM="MDL","Moldavian Leu"
COMBOBOX NAME="iso"   ITEM="USD","US Dollar"
COMBOBOX NAME="iso"   ITEM="RUR","Russian Rouble"
COMBOBOX NAME="iso"   ITEM="UAH","Ukrainean Hr."
COMBOBOX NAME="iso"   ITEM="FIM","Finnish Mark"
COMBOBOX NAME="iso"   ITEM="DEM","Deutche Mark"
COMBOBOX NAME="iso"   ITEM="GBP","GB Pound"

LABEL CAPTION="&Starting Date" X=154 Y=8 FOCUSNAME="date1"
EDIT NAME="date1"              X=154 Y=24

EDIT NAME="date1"              MASK="00/00/0000" VALUE="01011996"

LABEL CAPTION="&Ending Date"   X=154 Y=52 FOCUSNAME="date2"
EDIT NAME="date2"              X=154 Y=68
EDIT NAME="date2"              MASK="00/00/0000" VALUE="01011999"

SUBMIT CAPTION="OK"            X=60 Y=112
CANCEL CAPTION="Cancel"        X=154 Y=112

-----BEGIN PGP SIGNATURE-----
iQDVAwUANfjoiRQeqwtQAYtzAQHkIQX+JhO61HCBfVw5VF3KqQhpApmOPhk2gEKz
C7qkNwpx7lexjbZvTVNGNfxTk7cTx5AxSFiUV32JH9WPm9fuJ5/bXIfWojDnaYbi
OM/BqS2KykFyoiuy+KULji10oRTt1jdC0Yqyv+OMgo2RuMwI0QhUozpHlVvkEHkk
r3acZ3NVIjBZHdW0I4YCjA3FKxBQmoFsQg9/ndjeE2lHZTCtLK2Kue036PeSCJq1
JWwVgWwT0JfhfFMXjj5tZm7pspNaGLst
=FBRX
-----END PGP SIGNATURE-----

Экранная форма, описанная приведенным TBC-файлом, выглядит следующим образом:

По нажатию OK, программа The Bat! формирует следующую строку запроса:

service=getcurrencytrend&iso=USD&date1=01011996&date2=01011999

Так как значения параметров ENCRYPT и SIGN ключевого слова MSG установлены в ON, эта строка, перед отправкой на сервер, шифруется и подписывается программой The Bat!, и на сервер, через электронную почту, на адрес <client-bank@bank.com> (параметр TO ключевого слова MSG) передается сообщение с нижеследующим телом:

-----BEGIN PGP MESSAGE-----
hMwDFB6rC1ABi3MBBgBuPwdXPA/obgJJ/fcjDSqO7oh820EHlKpA5mzbYSwg/qWg
wYvNO/iJq4mofSfUnwozK3S5dD4zSeNcEqzQzw3ZZpE5D8aLOlNRAKlRh2ZIfN4W
6pmLJrhcX/GvsH667YUfL97r8LCWbaBtYI8D85ZluPSNGzt8AIgjIEZLKaAcq6yD
eYpO5GpxvvDvT8Vb80QnUZW5kTX9MGFg+gtUGqcb3f3dibyewWZfjndhkjj4Br4I
QLQ5v0mjx76lqxhbi5qmAAABM3PfOx1lpLE7VkHCTuQSPsm09a69rjQqgKimOPxj
hcH8wKXAi2FYDQ8wY8iszRZ9IeDHJtqOsdr0vUltT0Mj0jGvWi1Jb/jFOZ0jW/2J
k1uFMo5Dy/gaGQjjCIZvRT2dWy7CQ67vnegTi2zsvMAPM6/Bz7qTA6lsMMY88E9p
4qDlcN6OZIlY8DGaExcIDpoZwPChgIQfA55VQyNfN5YKzfBxCmtqSWbbLFh7WnkR
8FBLi9E8rPGg2jmzfAn1CczYnlfXinHtuAKmxmt3m3bOyNv5SGmMz+9WWhWIBH8Q
XIBXrfH2yDDldKwkyj0tsjeXs6LFS7D/kMCdBNM1FClWw1EftTBbdwL0ykDX9Z6f
NS6fQxYJxGrfAMp7hSaGydrenSKEviAy5o6HyjBxoCqQLGKdsWQ=
=wflO
-----END PGP MESSAGE-----

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

 

Back to The Bat! page


Copyright © 1998-2000 RITLABS S.R.L. All rights reserved.