Seguridad: restringir el acceso interno por software de terceros

Tengo una aplicación Java en la que los usuarios pueden cargar "complementos" de terceros para mejorar la experiencia del usuario. Existe una API para uso de estos complementos, pero el software de terceros debe tener restringido el acceso a clases de aplicaciones internas por razones de seguridad. El paquete restringido a los complementos sería "com.example" y el permitido sería "com.example.api". Las clases API hacen llamadas a las clases internas ofuscadas.

Después de investigar esto, me encontré con un par de métodos de SecurityManager: checkMemberAccess (Class, int) y checkPackageAccess (String) , que parecían ser caminos viables para mi objetivo. Sin embargo, después de hacer algunas pruebas e investigaciones adicionales, descubrí que checkMemberAccess solo se aplica a llamadas de reflexión, y checkPackageAccess solo se llama cuando un cargador de clases invoca loadClass.

¿Cuál es una forma razonable de restringir el acceso a un paquete (com.example, pero no com.example.api)?

Respuesta 1

Estoy desarrollando una aplicación web en la que estoy usando Java como mi front-end y shell como mi back-end. Estoy procesando muchos archivos en shell ... por ejemplo, si tengo que procesar 100 archivos. Soy ...

Aquí está mi código en el que estoy tratando de trabajar para validar la firma xml. Para un archivo xml que contiene xml que está firmado con el algoritmo de certificado de firma md2RSA, funciona perfectamente bien. Pero ...

Soy bastante nuevo en Java y tengo algunas dudas al establecer el classpath. Ya hice mi tarea antes de hacer la pregunta en este foro. Intenté buscar en Google y referí otros foros, pero no encontré lo que yo ...

Tengo un complemento Gradle que genera algunos recursos en el directorio build / resources. Cuando ejecuto el programa desde IntelliJ, no encuentra el recurso en classpath. Intellij utiliza nuestro directorio ...