Filtros incorporados serialización | Java

El registro de invocación de método remoto de Java (RMI), el recolector de basura distribuido de RMI y las extensiones de administración de Java (JMX) tienen filtros que se incluyen en el JDK. Debe especificar sus propios filtros para RMI Registry y RMI Distributed Garbage Collector para agregar protección adicional.

Filtros para el registro RMI

Nota: Utilice estos filtros integrados solo como puntos de partida. Edite la propiedad sun.rmi.registry.registryFilter del sistema para configurar listas negras y/o amplíe la lista blanca para agregar protección adicional para el Registro RMI. Para proteger toda la aplicación, agregue los patrones a la propiedad jdk.serialFilter del sistema global para aumentar la protección para otros usuarios de serialización que no tienen sus propios filtros personalizados.

El Registro RMI tiene un filtro de lista blanca incorporado que permite vincular objetos en el registro. Incluye las instancias de las clases java.rmi.Remote, java.lang.Number, java.lang.reflect.Proxy, java.rmi.server.UnicastRef, java.rmi.activation.ActivationId, java.rmi.server.UID, java.rmi.server.RMIClientSocketFactory, y java.rmi.server.RMIServerSocketFactory.

El filtro integrado incluye límites de tamaño: 
maxarray=1000000,maxdepth=20
Reemplaza el filtro integrado definiendo un filtro usando la propiedad sun.rmi.registry.registryFilter del sistema con un patrón. Si el filtro que define acepta clases pasadas al filtro o rechaza clases o tamaños, no se invoca el filtro integrado. Si su filtro no acepta o rechaza nada, se invoca el filtro integrado.

Filtros para el recolector de basura distribuido RMI

Nota: Utilice estos filtros integrados solo como puntos de partida. Edite la propiedad sun.rmi.transport.dgcFilter del sistema para configurar listas negras y/o amplíe la lista blanca para agregar protección adicional para el recolector de basura distribuido. Para proteger toda la aplicación, agregue los patrones a la propiedad jdk.serialFilter del sistema global para aumentar la protección para otros usuarios de serialización que no tienen sus propios filtros personalizados.

El recolector de basura distribuido RMI tiene un filtro de lista blanca integrado que acepta un conjunto limitado de clases. Incluye las instancias de las clases java.rmi.server.ObjID, java.rmi.server.UID, java.rmi.dgc.VMID, y java.rmi.dgc.Lease.

El filtro integrado incluye límites de tamaño:
maxarray=1000000,maxdepth=20
Reemplaza el filtro integrado definiendo un filtro usando la sun.rmi.transport.dgcFilterpropiedad del sistema con un patrón. Si el filtro acepta clases pasadas al filtro, o rechaza clases o tamaños, no se invoca el filtro integrado. Si el filtro de reemplazo no acepta o rechaza nada, se invoca el filtro integrado.

Filtros para JMX

Nota: Utilice estos filtros integrados solo como puntos de partida. Edite la propiedad jmx.remote.rmi.server.serial.filter.pattern de administración para configurar listas negras y/o amplíe la lista blanca para agregar protección adicional para JMX. Para proteger toda la aplicación, agregue los patrones a la propiedad jdk.serialFilter del sistema global para aumentar la protección para otros usuarios de serialización que no tienen sus propios filtros personalizados.

JMX tiene un filtro incorporado para limitar un conjunto de clases que se pueden enviar como parámetros de deserialización a través de RMI al servidor. Ese filtro está desactivado de forma predeterminada. Para habilitar el filtro, defina la propiedad jmx.remote.rmi.server.serial.filter.pattern de administración con un patrón.

El patrón debe incluir los tipos que se pueden enviar como parámetros a través de RMI al servidor y todos los tipos de los que dependen, más javax.management.ObjectName y java.rmi.MarshalledObjecttipos. Por ejemplo, para limitar el conjunto permitido de clases a los tipos Open MBean y los tipos de los que dependen, agregue la siguiente línea al archivo management.properties.
com.sun.management.jmxremote.serial.filter.pattern=java.lang.*;java.math.BigInteger;java.math.BigDecimal;java.util.*;javax.management.openmbean.*;javax.management.ObjectName;java.rmi.MarshalledObject;!*

Comentarios

Entradas populares