Loaded Document Sanitisation
SanitiseLoadedDocument anvender en valgt sikkerhedspolitik på hele den indlæste objektgraf og forbereder en kompakt fuld omskrivning
Profiles
| Profile | Removed content |
|---|---|
spJavaScriptOnly | Document JavaScript name trees and JavaScript actions |
spActiveContent | JavaScript plus launch, fjernnavigation, URI, indsendelse, import, multimedie, rendition, XFA og relaterede aktive indholds-entries |
spUntrustedDocument | Alt aktivt indhold plus indlejrede filer, tilknyttede filer, fil-attachment-annotationer, rich-media-payload-strukturer og ukendte actiontyper fundet i action-bærende pladser |
spRichMediaOnly | Rich-media-annotationer og deres løsrevne payload-streams |
spRedactionCleanup | Redact- og fil-attachment-annotationer, dokumentinformation, metadata, tilknyttede og indlejrede filer og hvert objekt, som disse fjernelser gør utilgængeligt |
Deklaration
function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
out Report: THPDFSanitiseReport): Boolean; overload;
function ScrubLoadedRedactionRemnants(
out Report: THPDFSanitiseReport): Boolean;
The overload without a profile uses spUntrustedDocument
Result report
THPDFSanitiseReport tæller fjernede actions, JavaScript-entries, indlejrede filer, risikable annotationer, XFA-entries, payload-streams, løsrevne referencer, utilgængelige objekter, metadata-entries, Redact-annotationer, kasserede bytes fra tidligere revisioner og besøgte objekter
Changed angiver, om objektgrafen ændrede sig, mens LimitExceeded and InvalidObjectGraph explain a rejected preflight
Safety and performance
- Operationen indekserer indirekte objekter og opløser referencer i nær-lineær tid i stedet for gentagne gange at scanne objektlisten
- En cykelsikker preflight besøger den komplette kandidatgraf før nogen mutation og afviser grafer over to millioner unikke noder
- Den utroværdige profil fejler lukket for ukendte action-ordbøger knyttet til action-bærende nøgler, mens anerkendte lokale
GoTonavigation - Den fulde omskrivning markerer utilgængelige indirekte objekter som slettede og komprimerer levende objektnumre for at fjerne forældreløse payload-bytes og undgå sparsom cross-reference-allokering
- Redaktionsoprydning bevarer bevidst urelaterede actions og sideadfærd, mens alle utilgængelige font-, billed-, payload- og metadataobjekter fjernes
- Ved gem tilbage til den indlæste kildesti skrives en midlertidig søskendefil, og kilden erstattes atomisk først når omskrivningen er lykkedes
Eksempel
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;
Brugsnoter
- Call the method only after
LoadFromFileeller en anden arbejdsgang for indlæste dokumenter lykkes - Et succesfuldt kald tvinger en fuld omskrivning igennem og forlader inkrementel-opdatering-tilstand, fordi fjernede bytes ikke må forblive i en tidligere revision
- Metoden fjerner aktive strukturer og muligheden for at nå payloads, men udfører eller fortolker ikke indlejrede scripts