З метою забезпечення безпеки існує 4 рівні безпеки.
1-й рівень захисту реалізовано у компіляторі Java в байт-код (розподіл пам’яті відкладено до часу виконання). Це сповільнює інтерпретацію Java-програм, але суттєво підвищує безпеку системи.
2-й рівень захисту здійснює версифікатор байт-коду. Ця програма перевіряє завантажений байт-код на виконання таких умов:
ü Відсутність в байт-коді вказівників на об’єкти, розташовані за межами JVM;
ü Байт-код не порушує обмежень доступу до ресурсів комп’ютера користувача Java-програми;
ü Доступ до будь-яких об’єктів програми здійснюється відповідно до їх типу (строга типізація);
ü Всі параметри команд JVM мають необхідні типи;
ü Доступ до полів об’єктів Java-програми узгоджений із визначенням їх атрибутів доступу public, private або protected.
3-й рівень захисту здійснюється при динамічному завантаженні класів при виконанні аплета на комп’ютері користувача.
4-й рівень захисту пов’язаний із такою організацією інтерфейсів із мережевими протоколами (http, ftp, тощо), які забезпечують доступ не до усієї мережі, а тільки до тих серверів, з яких завантажуються класи.
|
|
3-ій та 4-ий рівні нескладно організувати і в системах для інших мов програмування, а реалізація перших двох можливо лише у Java-технологіях.
Верифікатор байт-коду
Верифікатор байт-коду (byte-code verifier) сканує байт-коди, витягує інформацію про типи об’єктів у кожній точці виконання фрагмента коду.
Важливо відзначити, що завантажувач і версифікатор байт-коду не роблять ніяких припущень щодо походження кодів – отримані вони з локальної файлової системи або з іншого континенту.
Верифікатор байт-коду гарантує, що будь-який код, який пройшов перевірку, може бути використаний інтерпретатором без ризику пошкодження інтерпретатора.