Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Скриптинг в WEB.

Рубрика: Безопасность -> Безопасность рабочей станции
Метки: |
Среда, 13 мая 2009 г.
Просмотров: 4742

Современные Web-браузеры с каждым днем становятся все сложнее и сложнее. Сейчас трудно найти графический (не текстовый(например, старый добрый lynx)) браузер без поддержки скриптов JavaScript, Visual Basic Script, приложений Java и объектов Flash Macromedia. А все это является потенциальными «дырами» в системе безопасности.

     Общие вопросы.

     Если вы когда-нибудь использовали бесплатные счетчики посещений, вро­де тех, которые предоставляются сайтом li.ru, то, наверняка, обратили внимание, сколько информации получает счетчик от браузера. Кроме простого подсчета посещений, счетчики могут получать следующую ин­формацию:


  • IP-адрес.
  • Название браузера и его версию.
  • По названию браузера и по некоторым другим параметрами определить операционную систему.
  • URL-ссылки, то есть URL, с которого пользователь перешел на сайт со счетчиком.
  • Разрешение экрана пользователя.
  • Глубина цвета видеосистемы.
  • Номера версий плагинов браузера (Java, JavaScript, VBScript).
  • Размер истории, то есть узнать, сколько сайтов пользователь посетил во время Web-сессии.

     Первые четыре переменные браузер обычно сам передает Web-серверу, и они уста­навливаются как переменные окружения, которые общедоступны сценарию. Ос­тальные значения есть возможность получить с помощью JavaScript/VB Script (если они включены).

     Вот такой небольшой CGI-сценарий выводит все переменные окружения:

# ! /usr/bin/perl

print "Content-type:text/plain\n\n" ;

print "$_: $ENV{$_}\n for (keys %ENV);

     Можно сохранить этот сценарий под именем env.pl в каталоге cgi-bin Web-сервера. Если сделать его исполнимым и запустить с помощью Web-браузе­ра (http://<cepвep>/cgibin/env.pl), то вывод будет примерно таким:

SCRIPT_NAME : /cgi-bin/env.pi

SERVERJNTAME : dhsilabs . dhsilabs

SERVER_ADMIN : rootgdhsilabs

HTTP_ACCEPT_ENCODING : gzip,deflate,compress;q=0.9

HTTP_CONNECTION : keep-alive

REQUEST_METHOD : GET

HTTP_ACCEPT: text/xml,application/xml,application/xhtml+xml, \ text/html;q=0.9,text/plain;q=0.8,video/x \ -mng, image /prig, image/j peg, imaje/gif; q=0 . 2, */* ; q=0 . 1

SCRIPT_FILENAME : /var/www/cgi-bin/env.pi

SERVER_SOFTWARE : Apache/1.3.27 (Unix)

HTTP_ACCEPT_CHARSET : ISO-8859-1,utf-8;q=0.7,*;q=0.7

QUERY_STRING :

REMOTE_PORT : 4 305 6

HTTP_USER_AGENT:Mozilla/5.0 (Xll; U; Linux 1686; en-Us; rv:1.3)\

Gecko/20030313

SERVER_SIGNATURE:<ADDRESS>Apache/1.3.27 Server at dhsilabs.dhsilabs \

Port 80</ADRESS>

SERVER_PORT : 80

HTTP_ACCEPT_LANGUAGE : en-us,end;q=0.5

REMOTE_ADDR : 127.0.0.1

HTTP_KEEP_ALIVE : 300

SERVER_PROTOCOL : HTTP/1.1

PATH : /usr/local/sbin;/usr/localbin:/usr/sbin:/bin:/usr/sbin

REQUEST_URI : /cgi-bin/env.pi

GATEWAY__INTERFACE : CGI/1.1

SERVER_ADDR : 127.0.0.1

DOCUMENT_ROOT : /var/www/htdocs

HTTP_HOST : localhost

UNIQUE_ID : QJ-c7MCoAAIAAE3sAwo

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

     Небольшое отступление.

     Термины Java и JavaScript сбивают с толку многих пользователей - несмотря на похожие названия, это совсем различные вещи. Компания Netscape сделала JavaScript в 1995 г., и впервые его поддержка появилась в Netscape Navigator 2.0. Тогда этот язык назывался LiveScript (Живой Скрипт), но в это время началось бур­ное развитие языка Java от Sun, и компания Netscape в надежде на успех решила переименовать свой язык в JavaScript.

     Microsoft тоже выпустила свой язык сце­нариев, и назвала его Jscript. Языки Jscript и JavaScript очень похожи друг на друга, хоть и не одинаковы, но разницу между ними заметит только очень высококвалифицированный специалист. Для рядовых пользова­телей и Web-дизайнеров эти два языка рассматриваются как похожие.

     В попытке стандартизировать эти два языка ЕСМА (European Computer Manufactures Association) в 1997-1998 гг. создавала ECMAScript, кото­рый был представлен как кросс-платформенный и кросс-браузерный язык сценариев, сформированный на базе JavaScript и Jscript. Несмотря на то, что язык ECMAScript технически более корректен, большая часть Web-дизайнеров продолжает употреблять JavaScript.