Opschoning van geladen documenten
SanitiseLoadedDocument past een gekozen beveiligingsbeleid toe op de complete geladen objectgraaf en bereidt een compacte volledige herschrijving voor
Profiles
| Profile | Verwijderde inhoud |
|---|---|
spJavaScriptOnly | Document-JavaScript-naamstructuren en JavaScript-acties |
spActiveContent | JavaScript plus launch, externe navigatie, URI, submission, import, multimedia, rendition, XFA en verwante actieve-inhoud-invoeren |
spUntrustedDocument | Alle actieve inhoud plus ingebedde bestanden, gekoppelde bestanden, bestandsbijlage-annotaties, rich-media-payloadstructuren en onbekende actietypes die in actiedragende slots worden aangetroffen |
spRichMediaOnly | Rich-media-annotaties en hun losgekoppelde payloadstreams |
spRedactionCleanup | Redact- en bestandsbijlage-annotaties, documentinformatie, metadata, gekoppelde en ingebedde bestanden en elk object dat door die verwijderingen onbereikbaar wordt |
Declaratie
function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile; out Report: THPDFSanitiseReport): Boolean; overload; function SanitiseLoadedDocument( out Report: THPDFSanitiseReport): Boolean; overload; function ScrubLoadedRedactionRemnants( out Report: THPDFSanitiseReport): Boolean;
De overload zonder profiel gebruikt spUntrustedDocument
Resultaatrapport
THPDFSanitiseReport telt verwijderde acties, JavaScript-invoeren, ingebedde bestanden, risicovolle annotaties, XFA-invoeren, payloadstreams, losgekoppelde verwijzingen, onbereikbare objecten, metadata-invoeren, Redact-annotaties, weggegooide bytes van eerdere revisies en bezochte objecten
Changed geeft aan of de objectgraaf is gewijzigd, terwijl LimitExceeded en InvalidObjectGraph een afgewezen preflight verklaren
Veiligheid en prestaties
- De operatie indexeert indirecte objecten en lost verwijzingen op in bijna-lineaire tijd in plaats van de objectlijst herhaaldelijk te scannen
- Een cyclussafe preflight bezoekt de complete kandidaatgraaf vóór elke mutatie en wijst grafen boven de twee miljoen unieke knopen af
- Het untrusted-profiel faalt gesloten bij onbekende actiewoordenlijsten aan actiedragende sleutels, terwijl bekende lokale
GoTo-navigatie behouden blijft - De volledige herschrijving markeert onbereikbare indirecte objecten als verwijderd en verdichtactieve objectnummers om wees-payloadbytes te verwijderen en schaarse kruisverwijzingsallocatie te vermijden
- Redactie-opruiming bewaart bewust ongerelateerde acties en paginagedrag terwijl alle onbereikbare font-, beeld-, payload- en metadataobjecten worden verwijderd
- Terugschrijven naar het geladen bronpad schrijft een broertje-tijdelijk bestand en vervangt de bron pas atomair nadat de herschrijving is geslaagd
Voorbeeld
var Report: THPDFSanitiseReport; begin PDF.LoadFromFile('untrusted.pdf'); if not PDF.SanitiseLoadedDocument(spUntrustedDocument, Report) then raise Exception.Create('Document sanitisation was rejected'); PDF.SaveLoadedDocument('sanitised.pdf'); end;
Gebruiksopmerkingen
- Roep de methode pas aan nadat
LoadFromFileof een andere geladen-document-workflow is geslaagd - Een geslaagde aanroep dwingt een volledige herschrijving af en verlaat de incremental-update-modus, omdat verwijderde bytes niet in een eerdere revisie mogen blijven
- De methode verwijdert actieve structuren en payloadbereikbaarheid, maar voert ingebedde scripts niet uit en interpreteert ze niet