Enterprise edición
Desarme y reconstrucción de contenido (CDR)
De un vistazo
Sección titulada «De un vistazo»NextPDF Enterprise neutraliza un PDF no confiable mediante el desarme y la reconstrucción de contenido (CDR): analiza el archivo, lo comprueba frente a los límites de admisión, detecta las funciones peligrosas, las elimina y reconstruye un nuevo archivo a partir de los objetos que quedan. Las funciones peligrosas son contenido activo —scripts incrustados, acciones de lanzamiento, archivos incrustados, contenido multimedia enriquecido y similares— que un visor podría ejecutar o sobre el que podría actuar. Esta página se mantiene en el nivel de comportamiento: expone qué admite el motor, qué elimina, qué reconstruye y por qué la salida no es una copia probatoria.
El CDR es una transformación destructiva y unidireccional. La salida reconstruida es una proyección de seguridad de la entrada, no una copia preservada ni equivalente en hash. Ese límite se expone en Seguridad y cumplimiento.
Los requisitos previos se exponen en el frontmatter y se repiten en Requisitos previos.
Disponibilidad y licenciamiento
Sección titulada «Disponibilidad y licenciamiento»Esta capacidad se distribuye en NextPDF Enterprise (nextpdf/enterprise) y se activa con un sobre de licencia de nivel Enterprise. Un despliegue sin ese derecho no carga las clases de la capacidad. NextPDF Core y NextPDF Pro no proporcionan CDR. El motor se ejecuta en proceso; el documento no confiable se analiza y se reconstruye en su host. Comparar ediciones y obtener una licencia.
Qué hace esta capacidad
Sección titulada «Qué hace esta capacidad»El PDF admite contenido activo que un visor puede ejecutar o sobre el que puede actuar. Una acción ECMAScript hace que un procesador de PDF ejecute un script que puede cambiar valores de campo y apariencias, según ISO 32000-2 §12.6.4. Una acción de lanzamiento inicia una aplicación o abre o imprime un documento, según ISO 32000-2 §12.6.4. Los scripts a nivel de documento del diccionario de nombres se ejecutan automáticamente cuando se abre el documento, según ISO 32000-2 §7.7.4. El CDR elimina estas superficies.
El motor ejecuta un pipeline ordenado:
- Analizar el PDF de entrada.
- Control de admisión — verificar que el documento está dentro del límite de aceptación (número de objetos, número de páginas, tamaño del flujo decodificado y una proporción de inflación de flujo que defiende frente a entradas de bomba de descompresión). Un documento fuera de los límites se rechaza, no se sanea. El rechazo se informa de forma distinta a un resultado de saneamiento, de modo que su manejo de errores pueda distinguir los dos.
- Detectar amenazas — escanear en busca de los tipos de amenaza configurados.
- Filtrar — particionar los objetos en el conjunto seguro y el conjunto eliminado.
- Limpieza de referencias — limpiar los punteros que quedan colgando tras la eliminación.
- Reconstruir — serializar los objetos seguros en un nuevo PDF.
Los tipos de amenaza detectables incluyen scripts incrustados (y una eliminación agresiva de scripts que captura scripts en estructuras mal formadas), desencadenantes de acciones adicionales y de acción de apertura, acciones de lanzamiento, acciones de ir-a remotas, acciones de envío de formulario y de importación de datos, archivos incrustados, contenido multimedia enriquecido y tridimensional, árboles de nombres de scripts a nivel de documento, acciones de identificador de recursos uniforme (URI) externas, datos de XML Forms Architecture, campos de formulario interactivo, capas de contenido opcional no predeterminadas y objetos de firma digital (que una reconstrucción invalida necesariamente porque los rangos de bytes ya no coinciden). Un objeto que no se puede analizar se trata a sí mismo como una posible elusión y se elimina.
Tres políticas establecen los valores predeterminados:
- Estándar — elimina los tipos de amenaza de contenido activo configurados y detectables por el motor; las actualizaciones incrementales siempre se aplanan para defender frente al sombreado de firmas, y ese aplanamiento no es configurable en este modo.
- Paranoico — las mismas eliminaciones con límites de recursos más ajustados.
- Permisivo — para fuentes confiables: elimina scripts y acciones de lanzamiento, pero preserva las acciones URI, y hace configurable el aplanamiento de actualizaciones incrementales.
Por qué funciona así
Sección titulada «Por qué funciona así»El CDR reconstruye un nuevo archivo a partir de los objetos que juzgó seguros, en lugar de eliminar claves peligrosas en el sitio. Esa postura de lista de permitidos es la decisión que lo sostiene todo. Un objeto que el detector nunca reconoció —incluido uno que no pudo analizar— no sobrevive hasta la salida, de modo que una estructura desconocida falla de forma cerrada en lugar de colarse por una brecha de la lista de denegados. El control de admisión se ejecuta primero por la misma razón: una entrada fuera de los límites o inanalizable se rechaza de plano, nunca se reconstruye parcialmente. El coste de esa seguridad es la preservación. La reconstrucción cambia la disposición de los bytes, invalida las firmas y descarta las cargas útiles cuyo tipo de amenaza se elimina — por eso la salida es una proyección de seguridad, nunca una copia probatoria.
Contexto de diseño: Saneamiento de PDF no confiables: desarme y reconstrucción de contenido.
Requisitos previos
Sección titulada «Requisitos previos»- Instale NextPDF Core y el paquete Enterprise, y disponga de una licencia Enterprise activa.
- Defina el límite de aceptación para sus entradas —el número máximo de objetos, el número de páginas, el tamaño del flujo decodificado y la proporción de inflación— o utilice los límites de una política predefinida.
- Decida la política: estándar para la admisión general de contenido no confiable, paranoica para la postura más estricta o permisiva únicamente para fuentes confiables.
Configuración
Sección titulada «Configuración»La política es inmutable y transporta:
- Tipos de amenaza a eliminar — el conjunto que el detector escanea y el reconstructor elimina.
- Manejo de acciones URI — si las acciones URI externas se preservan.
- Aplanamiento de actualizaciones incrementales — siempre activado en estándar y paranoico; configurable en permisivo.
- Límites de admisión — número máximo de objetos, número de páginas, tamaño del flujo decodificado y proporción de inflación. Estos son el límite de aceptación, no el comportamiento de saneamiento; superarlos rechaza el documento.
Paso a paso
Sección titulada «Paso a paso»- Lea los bytes del PDF no confiable.
- Seleccione una política (estándar, paranoica o permisiva) o construya una con límites explícitos.
- Ejecute la operación de saneamiento del motor con los bytes y la política.
- Inspeccione el resultado: si informa de que no fue admitido, exponga el motivo del rechazo; de lo contrario, utilice los bytes reconstruidos y la lista de amenazas eliminadas.
- Trate la salida reconstruida como una proyección saneada, nunca como una copia probatoria o de archivo de la entrada.
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Cdr\CdrEngine;use NextPDF\Enterprise\Security\Cdr\CdrPolicy;use NextPDF\Enterprise\Security\Cdr\CdrResult;use Psr\Log\LoggerInterface;
final readonly class UntrustedPdfIntake{ public function __construct( private CdrEngine $engine, private LoggerInterface $logger, ) {}
/** * Sanitize an untrusted PDF and distinguish rejection from a clean rebuild. * * An over-limit document is rejected by admission control, not sanitized; * the caller surfaces the rejection reason instead of trusting an empty * output. The rebuilt bytes are a security projection, never an * evidentiary copy of the input. * * @param string $pdfBytes The untrusted PDF bytes. * * @return CdrResult The sanitization result, including admission status. */ public function sanitize(string $pdfBytes): CdrResult { $result = $this->engine->sanitize($pdfBytes, CdrPolicy::standard());
if (! $result->admitted) { $this->logger->warning('PDF rejected by CDR admission control', [ 'reason' => $result->rejectionReason, ]);
return $result; }
$this->logger->info('PDF sanitized', [ 'removedThreats' => \count($result->removedThreats), 'originalSize' => $result->originalSize, 'sanitizedSize' => $result->sanitizedSize, ]);
return $result; }}Verificación
Sección titulada «Verificación»- Ejecute una muestra que transporte una superficie de contenido activo conocida (por ejemplo, un script a nivel de documento) y confirme que aparece en la lista de amenazas eliminadas y está ausente de la salida reconstruida.
- Ejecute un documento fuera de los límites y confirme que el resultado informa de que no fue admitido con un motivo de rechazo, y que los bytes reconstruidos están vacíos.
- Confirme que una entrada firmada digitalmente tiene sus objetos de firma eliminados en la reconstrucción — una reconstrucción invalida la firma original porque los rangos de bytes cambian, por lo que los objetos de firma obsoletos se eliminan por diseño.
- Abra la salida reconstruida en un visor y confirme que no se ejecuta ningún script al abrir.
Seguridad y cumplimiento
Sección titulada «Seguridad y cumplimiento»- No para evidencia. La salida reconstruida es una proyección destructiva y no reversible. No la utilice para la preservación de evidencia legal, para la comparación de hash con el original ni como copia de archivo. Mantenga el original bajo custodia separada si necesita una copia probatoria.
- Admisión antes del saneamiento. Los límites de recursos son un límite de aceptación; un documento fuera de los límites se rechaza, no se sanea. Informe del rechazo de forma distinta para que una entrada fuera de los límites nunca se confunda con una reconstrucción limpia.
- El contenido activo se elimina. Los scripts, las acciones de lanzamiento, los árboles de nombres de scripts a nivel de documento, los archivos incrustados, el contenido multimedia enriquecido y superficies similares se eliminan — precisamente las acciones que un visor ejecutaría de lo contrario (ISO 32000-2 §12.6.4 acción ECMAScript; acción de lanzamiento; scripts a nivel de documento §7.7.4).
- Las firmas se invalidan por la reconstrucción. Como la reconstrucción cambia la disposición de los bytes, la firma original ya no puede validarse; los objetos de firma se eliminan en lugar de dejarse de forma engañosa en su sitio.
- Con pérdida por diseño. Las cargas útiles de archivos incrustados —incluidos los adjuntos de factura como Factur-X— se eliminan cuando se elimina su tipo de amenaza. El CDR es una proyección de seguridad, no una capa de preservación.
Esta página trata sobre seguridad de documentos. Toda fuente normativa está parafraseada; no se reproduce ningún texto normativo.
Manejo de fallos
Sección titulada «Manejo de fallos»- Fallo de análisis. Un documento que no se puede analizar produce un resultado de no admitido con un motivo de error de análisis en lugar de una reconstrucción parcial.
- Entrada fuera de los límites. El resultado informa de que no fue admitido con un motivo específico del límite; los bytes reconstruidos están vacíos.
- Objeto no analizable. Un objeto que no se puede analizar se trata como una posible elusión y se elimina, no se conserva silenciosamente.
- Recuento de páginas de mejor esfuerzo. La comprobación de admisión del recuento de páginas es de mejor esfuerzo; un catálogo mal formado no bloquea el pipeline, pero los límites de número de objetos y de flujo siguen aplicándose.
Límite de publicación
Sección titulada «Límite de publicación»Esta página documenta únicamente el comportamiento observable externamente y la superficie de API pública admitida. Las rutas de espacio de nombres internas, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de ticket quedan fuera del alcance.
Consulte también
Sección titulada «Consulte también»- Security — NextPDF Enterprise — la superficie de seguridad combinada de Enterprise.
- Validation — NextPDF Enterprise — comprobación de conformidad de un PDF producido o reconstruido.
- Forensics — NextPDF Enterprise — examen y trazado de documentos.
- Security — NextPDF Core — la superficie de cifrado y firma del núcleo.
- CDR · active content · shadow attack — términos del glosario.