Поскольку язык Java предназначен для использования в сетевой или
распределенной среде, то вопросам его безопасности было уделено большое
внимание. На данный момент язык Java позволяет создавать системы,
надежно защищенные от вирусов и несанкционированного доступа.
Но 100% безопасности не может обеспечить ни один язык
программирования, ведь все предусмотреть невозможно. Первые дыры в Java
были найдены экспертами по вопросам безопасности из Пристонского
университета еще в версии Java 1.0. Можно сказать, что все новые ошибки
находятся до сих пор, но от этого не застрахован ни один язык
программирования.
Тем не менее, специалисты компании Sun делают все, чтобы
своевременно устранить бреши в безопасности JDK. Так, компания
опубликовала внутренние спецификации интерпретатора языка Java и
привлекла к поиску ошибок независимых специалистов в области
безопасного ПО.
Обнаруженные на данный момент ошибки очень немногочисленны.
Самую свежую информацию о вопросах безопасности Java можно прочитать в
интернете http://java.sun.com/sfaq/
Вот лишь небольшой список ситуаций, возникновение которых предотвращает система безопасности языка Java:
переполнение стека выполняемой программы, к которому приводили некоторые черви;
повреждение участков памяти, которые находятся за пределами пространства, выделенного процессу;
считывание и запись локальных файлов при использовании
безопасного загрузчика классов, например веб-браузера, который
запрещает такой доступ к файлам.
Все меры безопасности вполне уместны и обычно работают без
проблем, но осмотрительность никогда не повредит. Со временем в язык
были добавлены новые средства защиты. Начиная с версии 1.1, в языке
Java появилось понятие классов с цифровой подписью. Пользуясь классом с
цифровой подписью, вы можете быть уверенными в его авторе. Если вы ему
доверяете, то можете предоставить этому классу все привилегии,
доступные на вашей машине.
Альтернативный механизм доставки кода, предложенный компанией
Microsoft, опирается на технологию ActiveX и для безопасности
использует только цифровые подписи. Но этого недостаточно, ведь любой
пользователь ПО фирмы Microsoft может подтвердить, что программы даже
известных производителей часто завершаются аварийно, создавая тем самым
опасность повреждения данных.
В тоже время система безопасности в языке Java намного надежнее
технологии ActiveX, поскольку она самостоятельно контролирует
приложение с момента его запуска и не позволяет ему причинить ущерб.