Безопасность песочницы Java-апплета, локальный и внешний доступ - PullRequest
1 голос
/ 01 февраля 2011

У меня была ошибка в нашем (подписанном кодом) java-апплете "доступ запрещен (java.net.SocketPermission xxxx: 443 connect_resolve." У нас была html кнопка "save", которая вызывала (через javascript) метод апплета для сохранения файл, загруженный в апплет, на веб-сервер. После некоторых обширных исследований Google я исправил его, обернув код метода сохранения нашего апплета в doPrivileged (). Ошибка, похоже, исправлена, люди счастливы.

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

Что меня особенно смущает, так это то, что мы тестировали наш апплет на тестовом сервере в нашей собственной сети и никогда не получали эту ошибку, пока не попробовали кнопку «сохранить» на javascript с клиентского компьютера, внешнего по отношению к нашей сети. Итак, на данный момент, я просто делаю обоснованное предположение: именно так работает механизм песочницы java-апплета.

Это правда? Пока клиентский апплет обращается к ресурсам веб-сервера с клиентского компьютера, который находится в той же доменной сети, он считается в стенах песочницы? И если клиентский компьютер является внешним по отношению к локальной сети веб-сервера, запрос апплета рассматривается вне стен песочницы и нуждается в doPrivileged? Или здесь есть другое объяснение, которого мне не хватает?

Мне не удалось найти в документации Sun или в Google ничего, что могло бы подтвердить или опровергнуть мое утверждение. Разъяснение от кого-то с большим опытом работы с Java-апплетами очень ценится

1 Ответ

2 голосов
/ 01 февраля 2011

Пока клиентский апплет получает доступ к ресурсам веб-сервера с клиентского компьютера, который находится в той же доменной сети, он считается в стенах песочницы?

Если под этим вы подразумеваете, что апплет с песочницей может «позвонить домой» на свой собственный сервер, тогда да.в локальной сети веб-сервера запрос апплета рассматривается вне стен песочницы и нуждается в doPrivileged?

Апплету требуется доверие (с цифровой подписью + принято конечным пользователем) для доступа к ресурсам с других серверов.Еще более усложняет это JavaScript.Внезапно появляется «ненадежный» элемент, который должен рассмотреть JRE.Оборачивая код в метод doPrivileged (), мы говорим JRE, что этому коду нужно доверять, даже если он вызывается чем-то другим, например JS.

...