Лучший подход к созданию среды безопасности в Java - PullRequest
1 голос
/ 25 марта 2010

Мне нужно создать настольное приложение, которое будет запускать сторонний код, и мне нужно избегать экспорта стороннего кода любым способом (веб, буфер обмена, файл io) из приложения.

Что-то вроде:

public class MyClass {

    private String protectedData;

    public void doThirdPartyTask() {
        String unprotedtedData = unprotect(protectedData);
        ThirdPartyClass.doTask(unprotectedData);
    }

    private String unprotect(String data) {
        // ...
    }

}

class ThirdPartyClass {

    public static void doTask(String unprotectedData) {
        // Do task using unprotected data.
        // Malicious code may try to externalize the data.
    }


}

Я читаю о SecurityManager и AccessControler, но я до сих пор не уверен, как лучше всего справиться с этим.

Что я должен прочитать о реализации?

Ответы [ 2 ]

2 голосов
/ 25 марта 2010

Прежде всего, практически невозможно остановить утечку информации на локальном компьютере. Вы, конечно, можете ограничить доступ к сети и даже большой доступ к файловой системе, но нет ничего, что могло бы помешать графическому интерфейсу всплывать диалоговому окну, отображающему информацию для пользователя на экране, или любым другим 100 способам, которыми вы могли бы «просочиться». данные.

Во-вторых, вы продолжаете говорить о том, что файл политики может изменяться пользователем. Да, это. Похоже, вы пытаетесь воссоздать DRM. Я бы предложил почитать DRM и общую бесполезность этого. По сути, все сводится к тому, чтобы дать кому-то запертую коробку и ключ от коробки и сказать им, чтобы она не открывалась. Если кто-то имеет физический доступ к вашей программе, вы почти ничего не можете сделать, чтобы помешать ему получать данные из нее, в Java или почти любом другом языке программирования (по крайней мере, не на компьютерах, как они созданы сегодня).

1 голос
/ 25 марта 2010

Общий подход состоит в том, чтобы запустить ваш jvm с политикой безопасности, которая предоставляет java.security.AllPermission вашей кодовой базе (то есть jar) и никаких разрешений сторонней кодовой базе. Вот некоторая документация о том, как работать с файлом политики и что поместить в указанный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...