#java #file #applet #logging #audit
#java #файл #апплет #ведение журнала #аудит
Вопрос:
Возможно ли отслеживать (регистрировать) весь доступ к файлам из Java-апплета (стороннего разработчика), которому был предоставлен доступ к локальному диску?
Необходимо просто регистрировать, к каким файлам осуществляется доступ.
Комментарии:
1. Нет, это апплет поставщика, за которым я не хочу «следить».
Ответ №1:
Я не думаю, что это возможно из коробки — в конце концов, это апплет без ограничений безопасности.
Если вы можете изменить этот апплет (или запустить его в какой-либо среде, которой вы управляете), вы можете установить менеджер безопасности, чьи checkRead
и checkWrite
(возможно также checkDelete
и аналогичные) методы ведут ваше протоколирование.
Кроме этого, возможно, есть какие-то функции отладки, которые вы могли бы использовать.
В общем, если вашему апплету не требуется произвольный доступ, вам следует использовать JNLP API для доступа к локальным файлам — тогда пользователь имеет над ним контроль.
Ответ №2:
Возможная (непроверенная) стратегия
Загрузчик апплета для ведения журнала файлов
- Создайте свой собственный (доверенный) апплет для загрузки стороннего апплета, который выполняет доступ к файлам.
- Используйте заглушку и контекст апплета из родительского апплета для вновь загруженного апплета.
- Установите пользовательский
SecurityManager
. - В
FileLoggingSecurityManager
переопределите checkPermission(разрешение), чтобы проверить наличие экземпляров FilePermission. - Регистрируйте их.