Соображения безопасности при размещении подписанных банок

Каковы последствия для безопасности при размещении подписанных JAR-файлов в Интернете?

Насколько я понимаю, подписание jar, когда пользователь выбирает автоматическое принятие сертификата, не имеет значения, поступил ли подписанный jar из вашего домена, связан с другим доменом или размещен в другом домене. Например, Sun использует этот метод, чтобы предоставить апплетам поддержку OpenGL, предоставляя (размещенный) подписанный jar-файл, который ссылается на драйвер. Итак, есть ли какие-либо меры предосторожности, которые я должен предпринять как разработчик и лицо, подписывающее сертификат java-кода, который я делаю доступным?


person hishadow    schedule 25.11.2008    source источник
comment
вам нужно уточнить, как вы используете размещенные банки - это для апплетов или что-то еще?   -  person frankodwyer    schedule 15.12.2008
comment
Сделал некоторые уточнения. Вопрос не в том, как я использую подписанную банку, а в том, как другие могут использовать мою подписанную банку после того, как я сделал ее доступной.   -  person hishadow    schedule 17.12.2008


Ответы (1)


В зависимости от контекста вы полагаетесь на менеджера безопасности и связанную с ним политику безопасности. Как правило, если вы не делаете свою собственную магию загрузчика классов, вам не нужно делать ничего особенного. Если у вас есть контроль над политикой безопасности (например, в приложении Java, а не в апплете), вы можете предоставить разрешения на вызов ваших банок только для определенного другого кода. Если вы полагаетесь на кодовую базу для различения кода, лучше использовать URL-адрес https. Также не вредно ограничить доступ к банкам на веб-сервере, если вы знаете, откуда/от кого должен исходить доступ, но, вероятно, это больше проблем, чем того стоит.

Однако вы всегда должны помнить, что вызывающая сторона вашего API может быть не вашим кодом и может быть злонамеренной. Таким образом, при моделировании угроз вы должны подумать о том, что может сделать злоумышленник, если он каким-то образом получил доступ к функциям, предоставляемым API, предоставляемым вашим кодом. Менеджер безопасности должен проверять стек вызовов, чтобы предотвратить подобные вещи. Но если, например, в вашей подписанной банке есть метод LaunchMissiles() ... вы можете спросить пользователя, уверены ли они в любом случае. И вы также можете аутентифицировать пользователя.

Вы также не должны обязательно полагаться на то, что пользователь нажмет правую кнопку при любом предупреждении безопасности, особенно если оно относится к сертификатам, URL-адресам и т. д. — большинство пользователей попадают в одну из двух категорий: те, кто нажимает «ОК» в любом предупреждении, потому что они не понимают его, и тех, кто нажимает «Отмена» в любом предупреждении, потому что они его не понимают.

person frankodwyer    schedule 17.12.2008