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

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

Сценарии JavaScript и апплеты Java.

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

Сценарии JavaScript.

     Ниже приведен сценарий, написанный на JavaScript, который выводит некоторые параметры компьютера клиента. Так как скрипты обрабатываются самими браузерами, то можно не запускать данный сценарий на сервере - нужно просто создать html-файл и открыть его в браузере:


<html> <body> <script>

document.write("<center><table border=l cellpadding=2xtr><td>"); document.write("<center><b>", navigator.appName,"</b>"); document.write ("</tdx/tr><tr><td>") ;

document.write("<center><table border=l cellpadding=2xtr>"); document.write("<td>Code Name: </tdXtdXcenter>") ; document .write ("<b>", navigator . appCodeName, "</tdx/tr>") ; document.write ("<trXtd>Version: </td><td><center>"); document.write("<b>",navigator.appVersion.substring(0,4),"</td></tr>"); document, wr ite ("<trXtd>Referrer: </td><td><center>"); document .write ("<b>", document. refer rer, "</tdx/tr>") ; document.write("<tr><td>Cookies enabled? </td><td><center>"); document.write("<b>",navigator.cookieEnabled,"</td></tr>"); document.write("<trXtd>Platf orm: </td><td><center>"); document .write ("<b>", navigator .platform, "</tdx/tr>") ; document.write("<tr><td>Pages Viewed: </tdxtd><center>"); document, wr ite ("<b>", history. length," </tdx/tr>") ; document.write ("<tr><td>Java enabled </tdxtdXcenter><b>") ; document .write ("<b>", navigator. javaEnabled () , "</tdx/tr>") ; document.write("<tr><td>Screen Resolution </td><td><center>"); document.write("<b>",screen.width," x ",screen.height,"</tdX/tr>"); document.write("<tr><td>Color Depth </td><td><center>"); document .write ("<b>", screen, со lor Depth, "</tdx/tr>") ; document.write ("</tableX/trx/tdx/tableX/center>") ;

</script> </body> </html>

     Надо ли беспокоиться о том, что скрипту доступна информация о браузере? Может быть, да, а может и нет. Конечно, скрипт может получить доступ к информации о браузере, но она ему обязательно нужна для нормальной работы. Так как между браузерами есть некоторая разница, то, например, для Internet Explorer скрипт должен выпол­нить один блок кода, а для Netscape (Mozilla) - другой.

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

     Временами появляются разные (причем достаточно серьезные) эксплоиты, написанные на JavaScript. Поэтому, если нет особой необходимости, лучше отключить JavaScript.

     Другими порядком распространенными в Интернете языками сценариев являются MS ActiveX и MS Visual Basic Script. Но ни ActiveX, ни VBScript не поддерживаются Linux-браузерами, поэтому можно о них не беспо­коиться. Хотя их поддержку, если надо, легко обеспечить с помощью специальных модулей. Оба языка порядком уязвимы, поэтому не рекомендуется без крайней необходимости включать их поддержку.

     Апплеты Java.

     Для большинства пользователей Java - это синоним интерактивного Web-содер­жимого, но нужно помнить: Java - это очень мощный мультиплатформенный язык, а Web-апплеты, создаваемые с помощью Java, - это лишь его очень малая часть. В отличие от скриптинговых языков (JavaScript, Jscript) Java может реализовывать огромное число функций, не связанных с самим браузером, поэтому должна быть реализована строка «Модель безопасности», чтобы не допустить получение апплетом полного контроля над узлом, на кото­ром он запущен.

     Модель безопасности Java реализована на настраиваемом "sandbox" - области, в которой апплет имеет возможность безопасно выполняться без возможности нанесе­ния системе какого-либо ущерба. Апплет не может выйти за пределы «песочницы» ("sandbox" в переводе с английского означает «песочница»).

     Также «песочница» не дает исполнять апплетам следующие действия:

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

     Современные браузеры с поддержкой Java обязаны придержи­ваться этих ограничений. Если есть желание проверить браузер, можно по­сетить страничку примеров от Sun (это фирма-разработчик Java) - http://java.sun.eom/sfaq/index.html#examples. Эти аппле­ты дают возможность проверить, уязвим ли тестируемый браузер или нет.

     Ограничения «песочницы» парализуют всю мощь Java как языка - смысл употреблять Java, если все, что разрешается в «песочнице», есть возможность реализовать и на JavaScript, причем с меньшими затратами времени. Поэтому все апплеты в сети делятся на те, которым доверяют (trusted), и те, которым не доверяют (untrusted). Первым дается большая свобода дейс­твий.

     Чтобы апплет заслужил доверие , разработчик должен подписать его собственным электронным ключом. Сделать это нужно с помощью Java Development Kit (JDK). Например, браузер Mozilla выводит предупреждение, если встречается с подписанным апплетом.

     Если нажать кнопку More Details, можно получить дальнейшую информацию об апплете, в том числе имя разработчика, метод шифрования и серийный номер.