Yüklenen Belge Sanitizasyonu
SanitiseLoadedDocument, seçilen bir güvenlik ilkesini eksiksiz yüklenen nesne grafiğine uygular ve kompakt bir tam yeniden yazma hazırlar
Profiller
| Profil | Kaldırılan içerik |
|---|---|
spJavaScriptOnly | Belge JavaScript ad ağaçları ve JavaScript eylemleri |
spActiveContent | JavaScript; ayrıca launch, uzak gezinme, URI, gönderim, içe aktarma, multimedya, rendition, XFA ve ilgili etkin içerik girdileri |
spUntrustedDocument | Tüm etkin içerik; ayrıca gömülü dosyalar, ilişkili dosyalar, dosya eki ek açıklamaları, zengin medya yük yapıları ve eylem taşıyan yuvalarda bulunan bilinmeyen eylem türleri |
spRichMediaOnly | Zengin medya ek açıklamaları ve bunların ayrık yük stream'leri |
spRedactionCleanup | Yneletme ve dosya eki ek açıklamaları, belge bilgileri, üst veri, ilişkili ve gömülü dosyalar ile bu kaldırmalarla ulaşılamaz hâle gelen her nesne |
Bildirim
function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
out Report: THPDFSanitiseReport): Boolean; overload;
Profil olmadan aşırı yükleme spUntrustedDocument kullanır
Sonuç raporu
THPDFSanitiseReport, kaldırılan eylemleri, JavaScript girişlerini, gömülü dosyaları, riskli ek açıklamaları, XFA girişlerini, yük akışlarını, ayrılan başvuruları, ulaşılamayan nesneleri ve ziyaret edilen nesneleri sayar
Changed, nesne grafiğinin değişip değişmediğini gösterirken LimitExceeded ve InvalidObjectGraph reddedilen bir ön uçuşu açıklar
Güvenlik ve performans
- İşlem, nesne listesini tekrar tekrar taramak yerine dolaylı nesneleri indeksler ve referansları near-linear sürede çözer
- Döngüden güvenli bir ön uçuş, herhangi bir değişiklikten önce aday grafiğin tamamını gezer ve iki milyon benzersiz düğümün üzerindeki grafikleri reddeder
- Güvenilmeyen profil, eylem taşıyan anahtarlara bağlı tanınmayan eylem sözlüklerinde hata hâlinde kapanır; tanınan yerel
GoTogezinmesini korur - Tam yeniden yazım, ulaşılamayan dolaylı nesneleri silinmiş olarak işaretler ve yetim yük baytlarını kaldırmak ile seyrek çapraz başvuru ayırmasını önlemek için canlı nesne numaralarını sıkıştırır
- Yneletme temizliği; ulaşılamayan tüm yazı tipi, görüntü, yük ve üst veri nesnelerini kaldırırken ilgisiz eylemleri ve sayfa davranışını bilinçli olarak korur
- Yüklenen kaynak yola geri kaydetme, yanına bir geçici dosya yazar ve özgün kaynağı yalnızca yeniden yazım başarılı olduktan sonra atomik olarak değiştirir
Örnek
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;
Kullanım notları
- Yöntemi yalnızca
LoadFromFileveya başka bir yüklenen belge iş akışı başarılı olduktan sonra çağırın - Başarılı bir çağrı tam yeniden yazmayı zorlar ve artımlı güncelleme modundan çıkar çünkü kaldırılan baytlar daha erken bir düzeltmede kalmamalıdır
- Yöntem etkin yapıları ve yük ulaşılabilirliğini kaldırır ancak gömülü betikleri yürütmez veya yorumlamaz