Enterprise édition
Désarmement et reconstruction du contenu (CDR)
NextPDF Enterprise neutralise un PDF non fiable par désarmement et reconstruction du contenu (CDR) : il analyse le fichier, le vérifie au regard de limites d’admission, détecte les fonctionnalités dangereuses, les supprime et reconstruit un nouveau fichier à partir des objets restants. Les fonctionnalités dangereuses sont du contenu actif — scripts intégrés, actions de lancement, fichiers intégrés, médias riches et similaires — qu’une visionneuse pourrait exécuter ou sur lequel elle pourrait agir. Cette page se situe au niveau du comportement : elle énonce ce que le moteur admet, ce qu’il retire, ce qu’il reconstruit, et pourquoi la sortie n’est pas une copie probante.
Le CDR est une transformation destructive et à sens unique. La sortie reconstruite est une projection de sécurité de l’entrée, et non une copie préservée ou équivalente par empreinte. Cette frontière est énoncée sous Sécurité et conformité.
Les prérequis sont énoncés dans le frontmatter et répétés sous Prérequis.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette capacité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de niveau Enterprise. Un déploiement dépourvu de cette autorisation ne charge pas les classes de la capacité. NextPDF Core et NextPDF Pro ne fournissent pas le CDR. Le moteur s’exécute en cours de processus (in-process) ; le document non fiable est analysé et reconstruit sur ton hôte. Comparer les éditions et obtenir une licence.
Ce que fait cette capacité
Section intitulée « Ce que fait cette capacité »PDF prend en charge du contenu actif qu’une visionneuse peut exécuter ou sur lequel elle peut agir. Une action ECMAScript amène un processeur PDF à exécuter un script qui peut modifier des valeurs et des apparences de champs, conformément à ISO 32000-2 §12.6.4. Une action de lancement lance une application ou ouvre ou imprime un document, conformément à ISO 32000-2 §12.6.4. Les scripts au niveau document dans le dictionnaire de noms s’exécutent automatiquement à l’ouverture du document, conformément à ISO 32000-2 §7.7.4. Le CDR supprime ces surfaces.
Le moteur exécute un pipeline ordonné :
- Analyser le PDF d’entrée.
- Contrôle d’admission — vérifier que le document se situe dans la frontière d’acceptation (nombre d’objets, nombre de pages, taille des flux décodés, et un ratio d’inflation des flux qui défend contre les entrées de type bombe de décompression). Un document hors limites est rejeté, et non assaini. Le rejet est rapporté distinctement d’un résultat d’assainissement afin que ta gestion d’erreurs puisse distinguer les deux.
- Détecter les menaces — rechercher les types de menaces configurés.
- Filtrer — partitionner les objets dans l’ensemble sûr et l’ensemble supprimé.
- Nettoyage des références — nettoyer les pointeurs laissés pendants par la suppression.
- Reconstruire — sérialiser les objets sûrs dans un nouveau PDF.
Les types de menaces détectables incluent les scripts intégrés (et un retrait agressif des scripts qui capture les scripts dans des structures malformées), les déclencheurs d’actions additionnelles et d’action d’ouverture, les actions de lancement, les actions go-to distantes, les actions de soumission de formulaire et d’importation de données, les fichiers intégrés, les médias riches et le contenu tridimensionnel, les arbres de noms de scripts au niveau document, les actions d’identificateur de ressource uniforme (URI) externes, les données XML Forms Architecture, les champs de formulaire interactifs, les couches de contenu optionnel non par défaut, et les objets de signature numérique (qu’une reconstruction invalide nécessairement parce que les plages d’octets ne correspondent plus). Un objet qui ne peut pas être analysé est lui-même traité comme un contournement potentiel et supprimé.
Trois politiques définissent les valeurs par défaut :
- Standard — supprime les types de menaces de contenu actif détectables par le moteur et configurés ; les mises à jour incrémentales sont toujours aplaties pour défendre contre le masquage de signature (signature-shadowing), et cet aplatissement n’est pas configurable dans ce mode.
- Paranoid — les mêmes suppressions avec des limites de ressources plus strictes.
- Permissive — pour les sources fiables : supprime les scripts et les actions de lancement mais préserve les actions URI, et rend l’aplatissement des mises à jour incrémentales configurable.
Pourquoi cela fonctionne ainsi
Section intitulée « Pourquoi cela fonctionne ainsi »Le CDR reconstruit un nouveau fichier à partir des objets qu’il a jugés sûrs, plutôt que de supprimer les clés dangereuses sur place. Cette posture de liste d’autorisation (allow-list) est la décision porteuse. Un objet que le détecteur n’a jamais reconnu — y compris un objet qu’il n’a pas pu analyser — ne survit pas dans la sortie, de sorte qu’une structure inconnue échoue de manière fermée au lieu de se glisser par une faille de liste de refus (deny-list). Le contrôle d’admission s’exécute en premier pour la même raison : une entrée hors limites ou non analysable est rejetée d’emblée, jamais reconstruite partiellement. Le coût de cette sécurité est la préservation. La reconstruction modifie la disposition des octets, invalide les signatures et abandonne les charges utiles dont le type de menace est retiré — c’est pourquoi la sortie est une projection de sécurité, jamais une copie probante.
Contexte de conception : Assainir les PDF non fiables : désarmement et reconstruction du contenu.
Prérequis
Section intitulée « Prérequis »- Installe NextPDF Core et le paquet Enterprise, et détiens une licence Enterprise active.
- Définis la frontière d’acceptation pour tes entrées — le nombre maximal d’objets, le nombre de pages, la taille des flux décodés et le ratio d’inflation — ou utilise les limites d’une politique prédéfinie.
- Choisis la politique : standard pour l’admission générale d’entrées non fiables, paranoid pour la posture la plus stricte, ou permissive uniquement pour les sources fiables.
Configuration
Section intitulée « Configuration »La politique est immuable et porte :
- Types de menaces à supprimer — l’ensemble que le détecteur recherche et que le reconstructeur retire.
- Gestion des actions URI — si les actions URI externes sont préservées.
- Aplatissement des mises à jour incrémentales — toujours activé en standard et paranoid ; configurable en permissive.
- Limites d’admission — nombre maximal d’objets, nombre de pages, taille des flux décodés et ratio d’inflation. Ce sont la frontière d’acceptation, et non un comportement d’assainissement ; les dépasser rejette le document.
Étape par étape
Section intitulée « Étape par étape »- Lis les octets du PDF non fiable.
- Sélectionne une politique (standard, paranoid ou permissive) ou construis-en une avec des limites explicites.
- Exécute l’opération d’assainissement du moteur avec les octets et la politique.
- Inspecte le résultat : s’il indique non admis, expose la raison du rejet ; sinon utilise les octets reconstruits et la liste des menaces supprimées.
- Traite la sortie reconstruite comme une projection assainie, jamais comme une copie probante ou archivistique de l’entrée.
<?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; }}Vérification
Section intitulée « Vérification »- Exécute un échantillon portant une surface de contenu actif connue (par exemple un script au niveau document) et confirme qu’il apparaît dans la liste des menaces supprimées et qu’il est absent de la sortie reconstruite.
- Exécute un document hors limites et confirme que le résultat indique non admis avec une raison de rejet, et que les octets reconstruits sont vides.
- Confirme qu’une entrée signée numériquement voit ses objets de signature supprimés lors de la reconstruction — une reconstruction invalide la signature originale parce que les plages d’octets changent, de sorte que les objets de signature périmés sont retirés par conception.
- Ouvre la sortie reconstruite dans une visionneuse et confirme qu’aucun script ne s’exécute à l’ouverture.
Sécurité et conformité
Section intitulée « Sécurité et conformité »- Pas pour la preuve. La sortie reconstruite est une projection destructive et non réversible. Ne l’utilise pas pour la préservation de preuves juridiques, pour la comparaison d’empreintes avec l’original, ni comme copie archivistique. Conserve l’original sous une garde séparée si tu as besoin d’une copie probante.
- Admission avant assainissement. Les limites de ressources sont une frontière d’acceptation ; un document hors limites est rejeté, et non assaini. Rapporte le rejet distinctement afin qu’une entrée hors limites ne soit jamais confondue avec une reconstruction propre.
- Le contenu actif est supprimé. Les scripts, les actions de lancement, les arbres de noms de scripts au niveau document, les fichiers intégrés, les médias riches et les surfaces similaires sont retirés — les actions mêmes qu’une visionneuse exécuterait sinon (ISO 32000-2 §12.6.4 action ECMAScript ; action de lancement ; scripts au niveau document §7.7.4).
- Les signatures sont invalidées par la reconstruction. Parce que la reconstruction modifie la disposition des octets, la signature originale ne peut plus être validée ; les objets de signature sont supprimés plutôt que laissés en place de manière trompeuse.
- Avec perte par conception. Les charges utiles des fichiers intégrés — y compris les pièces jointes de factures telles que Factur-X — sont supprimées lorsque leur type de menace est retiré. Le CDR est une projection de sécurité, et non une couche de préservation.
Cette page concerne la sécurité des documents. Chaque source normative est paraphrasée ; aucun texte normatif n’est reproduit.
Gestion des échecs
Section intitulée « Gestion des échecs »- Échec d’analyse. Un document qui ne peut pas être analysé donne un résultat non admis avec une raison d’erreur d’analyse plutôt qu’une reconstruction partielle.
- Entrée hors limites. Le résultat indique non admis avec une raison spécifique à la limite ; les octets reconstruits sont vides.
- Objet non analysable. Un objet qui ne peut pas être analysé est traité comme un contournement potentiel et supprimé, et non conservé silencieusement.
- Comptage de pages au mieux. La vérification d’admission du nombre de pages est au mieux (best-effort) ; un catalogue malformé ne fait pas planter le pipeline, mais les limites de nombre d’objets et de flux s’appliquent toujours.
Frontière de publication
Section intitulée « Frontière de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface d’API publique prise en charge. Les chemins d’espaces de noms internes, les classes utilitaires, les tableaux de mécanismes, les noms de fichiers de runbook et les préfixes de tickets sont hors de portée.
Voir aussi
Section intitulée « Voir aussi »- Sécurité — NextPDF Enterprise — la surface de sécurité Enterprise combinée.
- Validation — NextPDF Enterprise — vérification de conformité d’un PDF produit ou reconstruit.
- Forensique — NextPDF Enterprise — examen et traçage de documents.
- Sécurité — NextPDF Core — la surface de chiffrement et de signature du cœur.
- CDR · contenu actif · attaque par masquage — termes du glossaire.