Loaded Document Sanitisation
SanitiseLoadedDocument primjenjuje odabranu sigurnosnu politiku na cijeli učitani graf objekata i priprema kompaktni potpuni prepis
Profili
| Profil | Uklonjeni sadržaj |
|---|---|
spJavaScriptOnly | Stabla naziva dokumentnog JavaScripta i JavaScript akcije |
spActiveContent | JavaScript plus launch, udaljena navigacija, URI, podnošenje, uvoz, multimedijski, prikazni, XFA i srodni unosi aktivnog sadržaja |
spUntrustedDocument | Sav aktivni sadržaj plus ugrađene datoteke, pridružene datoteke, napomene privitaka datoteka, strukture tereta bogatih medija i nepoznati tipovi akcija pronađeni u utorima s akcijama |
spRichMediaOnly | Napomene bogatih medija i njihovi odvojeni tokovi tereta |
spRedactionCleanup | Napomene Redact i privitaka datoteka, informacije dokumenta, metapodaci, pridružene i ugrađene datoteke te svaki objekt koji su ta uklanjanja učinila nedostižnim |
Deklaracija
function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
out Report: THPDFSanitiseReport): Boolean; overload;
function ScrubLoadedRedactionRemnants(
out Report: THPDFSanitiseReport): Boolean;Preopterećenje bez profila koristi spUntrustedDocument
Izvještaj rezultata
THPDFSanitiseReport broji uklonjene akcije, JavaScript unose, ugrađene datoteke, rizične napomene, XFA unose, tokove tereta, odvojene reference, nedostižne objekte, unose metapodataka, napomene Redact, odbačene bajtove ranijih revizija i posjećene objekte
Changed označava je li se graf objekata promijenio, dok LimitExceeded i InvalidObjectGraph objašnjavaju odbijeni predkontrolni prolaz
Sigurnost i performanse
- Operacija indeksira neizravne objekte i razrješuje reference u gotovo linearnom vremenu umjesto ponavljanja pretrage popisa objekata
- Preflight otporan na cikluse posjećuje kompletan graf kandidata prije bilo kakve mutacije i odbacuje grafove iznad dva milijuna jedinstvenih čvorova
- Nepouzdani profil otkazuje zatvoreno za neprepoznate rječnike akcija prikačene na utorima s akcijama uz zadržavanje prepoznate lokalne
GoTonavigacije - Potpuni prepis označava nedostižne neizravne objekte kao izbrisane i sabija žive brojeve objekata kako bi uklonio siročadne bajtove tereta i izbjegao rijetku alokaciju ukrštenih referenci
- Čišćenje izbacivanja namjerno čuva nepovezane akcije i ponašanje stranica uz uklanjanje svih nedostižnih objekata fontova, slika, tereta i metapodataka
- Spremanje natrag na učitanu izvornu putanju zapisuje srodnu privremenu datoteku i atomski zamjenjuje izvor tek nakon uspjeha prepisa
Primjer
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;Napomene za uporabu
- Pozovite metodu tek nakon što
LoadFromFileili drugi tijek rada učitanog dokumenta uspije - Uspješan poziv prisiljava potpuni prepis i izlazi iz načina inkrementalnog ažuriranja jer uklonjeni bajtovi ne smiju ostati u ranijoj reviziji
- Metoda uklanja aktivne strukture i dosežnost tereta ali ne izvršava ni tumači ugrađene skripte