Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [ 88 ] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Имена и значения полей формы передаются ограмму с помощью одного из методов: GET или POST (рис. 18.4). Пока механизм этой передачи не должен вас

Web-сервер

Web-броузер

*f CGI- \ InporpaMuJ

Рис. 18.4. Дае перестся серверу

COI-программа получает значения, генерирует ответ и посылает его обратно броузеру (рис. 18.5). Этим ответом может быть страница HTML, страница с другой формой, нереадресация на другой URL или любой другой возможный вывод

Web-сервер


Рис. 18.5. CGI-программа Web-сервера возвращает ответ

Передача информации CGI-програлллле

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

Если вызвать эту функцию без аргументов, она возвратит имена полей, переданных COI-программе Если COI-программе передается форма, HTML-код которой приведен в листинге 18.1, функция param возвратит список description, sex, name и submit

Если у функции param имеется аргумент, она возвратит значение этого параметра. Например, вызов param (sex) возвратит значение переключателей - male или female, в зависимости от того, какой переключатель был выделен.

В листинга .2 приведена короткая COI-программа для вывода этих параметров.

Лист 18.2. CGI-Ofрала вьда параметров

!/usr/bin/perl -w

use strict;

use CGI qw(;standard I;

print header;



6: print "Оамития: ", par am (паше) г "<BR>"; 7: print "Поп: ", param(sex}, -<BR>-;

8: print Описание;<ВК>", parcm(descriptiai), "<?>"!

Если параметр, указанный в аргументе функции не используется в форме,

функция возвращает значение

Методы и PO6T

В форме, текст которой приведен в листинге 18.1, у дескриптора имеется

атрибут method. Этот атрибут определяет, каким образом Web-броузер должен передавать данные Web-серверу. На данный момент существуют два метода.

Первый метод (он используется по умолчанию, т.е. в том случае, когда в дескрипторе <ШМ> не указан атрибут method) - GET. При этом методе значения элементов формы передаются в CGI-программу в закодированном виде как часть URL. При работе в Internet часто можно видеть подобные URL:

http: www.server.com/cgi-bin/sample.pl?name=foosdesc=Basic%20rorms

CGI-программа преобразует последнюю часть URL и получит поля и их значения. Это происходит при вызове функции param. ffe пытайтесь получить эти значения другим способом. Функции ram идеально подходит для этого, и у вас едва ли возникнет необходимость воспользоваться другим кодом для извлечения значений полей.

Другой метод, ST, позволяет добиться того же результата, но другими средствами. При этом значения элементов формы не добавляются к URL, а перес1лаются на стандартный вход CGI-программы после установки соединения с Web-сервером. Тонкости этого процесса вам знать не обязательно, в модуле GGI все они уже учтены. Как и раньше, для получения в программе значений полей достаточно вызвать функцию param.


В Internet или в других книгах можно встретить CGI-программы, которые проверяют переменную Офужения QDERY STRING ИЛИ REQUEST HETHOD, чтобы определить, какой был использован метод - СЁ" или POST. Эти программы пытаются воспроизвести функциональность стандартного модуля CGI и, вероятно, не столь успешно. Не делайте этого в ваших программах.

Итак, какой же метод выбрать? Каждый метод имеет свои преимущества и недостатки. Метод GEL позволяет в Web-броузере создать закладку на URL, генерирующий данную страницу. Например, па URL

http: www.server.com/cgi-bin/sample.pl?name=fooSdesc=Basic*20Forms

может быть сделана закладка и в дальнейшем в любой момент вызвана. Для CGI-программы sample.pl неважно, заполняли ли вы на самом деле форму или нет. Ей важно получить параметры для выполнения CGI-программы. Возможность многократного вызова CGI-программы при использовании метода QT называется идемпотентностью.

Возможно, вам не нужно, чтобы в Web-броузере можно б1ло сделать закладку, непосредственно запускающую CGI-программу на ващем сервере. К тому же, следует заметить, что URL при использовании метода GEL выглядит очень некрасиво.

Метод POST не использует URL для передачи данных, при этом методе данные пе-ресьшаются отдельно. Поэтому в данном случае закладку на страницу, генерируемую сделать невозможно.



Основные сведения по вопросам безопасности в Web

Перед тем как поместите ограмму на Web-сервер, вы должны осознать, что тем самым вы предоставляете удаленным пользователям, использующим Web-

броузеры, ограниченный доступ к вашей системе. В случае обычных документов

HTML пользователи могут лишь загрузить статические документы. При использовании COI-программ они смогут запускать программы на Web-сервере

Написание безопасных COI-программ сохранит нервы вам и администратору Web-сервера. Создавать такие программы несложно, нужно лишь следовать некоторым правилам.

Открытый канал

При загрузке в броузер страницы с Web-сервера коды HTML пересылаются по обычному каналу в открытом виде (рис. 18.6). Это означает, что эти данные не кодируются, не шифруются и не скрываются каким-либо другим способом.

Internet

Web-сервер


Пароль: продается янс< ий шкаф?"

Рис. 18.6. Обычный текст пересылается на сервер

Данные, которые пользователь вводит при заполнении формы, передаются COI-программе и пересылаются с использованием того же протокола, что и начальная Web-страница Во время пересылки все поля формы открыты для всеобщего обозрения (рис. 18.7)

Web-сервер

Отзь*~ш васп ЖИУУ1 У11$им

выше!"

Рис. 18.7, Ответ сервера -обычный текст

Пересылка данных в открытом виде - одна из основных проблем, на которые вы должны обратить особое внимание. Internet - далеко не безопасное место. Кто угодно может подключиться к кабелю, по которому пересылаются данные между сервером и броузером, и перехватить их.

Учитывая все вышесказанное, вы никогда не должны передавать следующие данные посредством обычных CGI-форм,

• Любые пароли.

• Личную информацию (номера карточек социального страхования, телефонные номера).

• Финансовую информацию (номера счетов, PIN-коды, карточек).

номера кредитных



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 [ 88 ] 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122