Как запустить ненадежное приложение Java Swing в песочнице? - PullRequest
3 голосов
/ 08 июня 2011

Я обнаружил, что у Java есть некоторые разрешения безопасности для управления доступом к ресурсам AWT. Есть ли что-то для управления тем, что приложение Swing может или не может делать, чтобы избежать ненадежного приложения, которое могло бы нарушить работу друг друга в среде нескольких приложений?

Например:

  • Открытие JFrame.
  • Открытие полностью прозрачного JFrame.
  • Закрытие экземпляра JFrame другого ненадежного приложения.
  • и т.д ...

Обновление на вопрос:

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

Кроме того, как сделать так, чтобы ненадежное приложение выдавало себя за другое приложение, имитируя его интерфейс? Любой совет приветствуется.

1 Ответ

1 голос
/ 09 июня 2011

Я не уверен, что то, что вы хотите сделать, возможно.AWT имеет набор разрешений, которые можно настроить при запуске приложения в «песочнице» (см. AWTPermission , но они очень ограничены и, по-видимому, более нацелены на предотвращение плохой работы апплетов.

Кроме того, предотвращение имитации другим приложением кажется мне невозможным: если обоим приложениям разрешено создавать компоненты пользовательского интерфейса, что мешает одному создавать те же компоненты пользовательского интерфейса, что и другим?

Еслиу вас есть приложение, которому вы доверяете, а другое - нет, вам нужен код, который эти приложения не могут контролировать, который будет запускать их по-другому, например, сумасшедшая идея - это менеджер окон, который ставит красную рамку вокруг ненадежного приложения,так что пользователи могут идентифицировать его как ненадежного. Но Java, кажется, не имеет достаточной поддержки для чего-то подобного, когда оба приложения работают в одной и той же JVM, так как, кажется, нет никакого способа изолировать два приложения (простой FocusListener может позволить одному приложению иметь доступ к компонентам другого и изменять их).

...