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
Publicar un comentario