Loaded Document Sanitisation
SanitiseLoadedDocument áp dụng một chính sách bảo mật đã chọn lên toàn bộ object graph đã nạp và chuẩn bị một lần ghi lại đầy đủ gọn
Các profile
| Profile | Removed content |
|---|---|
spJavaScriptOnly | Name tree JavaScript của tài liệu và các JavaScript action |
spActiveContent | JavaScript cùng các mục nội dung chủ động launch, điều hướng từ xa, URI, submit, nhập, đa phương tiện, rendition, XFA và liên quan |
spUntrustedDocument | Toàn bộ nội dung chủ động cùng tệp nhúng, tệp liên kết, annotation đính kèm tệp, cấu trúc payload rich-media và các kiểu action lạ tìm thấy trong các slot chứa action |
spRichMediaOnly | Các annotation rich-media cùng các stream payload tách rời của chúng |
spRedactionCleanup | Các annotation redaction và đính kèm tệp, thông tin tài liệu, metadata, tệp liên kết và nhúng, cùng mọi đối tượng trở nên không thể với tới do các phép gỡ bỏ đó |
Khai báo
function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
out Report: THPDFSanitiseReport): Boolean; overload;
Overload không có profile dùng spUntrustedDocument
Báo cáo kết quả
THPDFSanitiseReport đếm các action đã loại bỏ, mục JavaScript, tệp nhúng, annotation rủi ro, mục XFA, luồng payload, tham chiếu đã tách, object không thể truy cập, và object đã thăm
Changed cho biết object graph có thay đổi hay không, trong khi LimitExceeded và InvalidObjectGraph giải thích một preflight bị từ chối
An toàn và hiệu năng
- Thao tác đánh chỉ mục các đối tượng indirect và phân giải các tham chiếu trong thời gian gần tuyến tính thay vì quét danh sách đối tượng lặp lại
- Preflight an toàn với chu trình duyệt toàn bộ đồ thị ứng viên trước mọi phép biến đổi và từ chối các đồ thị trên hai triệu node duy nhất
- Profile không tin cậy fail closed với các từ điển action không nhận diện được gắn vào các key chứa action trong khi vẫn giữ điều hướng
GoTocục bộ được nhận diện - Ghi lại toàn bộ đánh dấu các đối tượng indirect không thể với tới là đã xóa và nén các số đối tượng còn sống để loại bỏ byte payload mồ côi và tránh cấp phát tham chiếu chéo rời rạc
- Dọn dẹp redaction chủ ý bảo toàn các action và hành vi trang không liên quan trong khi gỡ mọi đối tượng font, ảnh, payload và metadata không thể với tới
- Lưu ngược về đường dẫn nguồn đã tải sẽ ghi một tệp tạm anh em và chỉ nguyên atom thay thế nguồn sau khi ghi lại thành công
Ví dụ
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;
Ghi chú sử dụng
- Chỉ gọi phương thức này sau khi
LoadFromFilehoặc một workflow tài liệu đã nạp khác thành công - Một lần gọi thành công ép buộc một lần ghi lại đầy đủ và thoát chế độ cập nhật gia tăng vì các byte đã loại bỏ không được phép còn lại trong một revision trước đó
- Phương thức loại bỏ các cấu trúc active và khả năng truy cập payload nhưng không thực thi hay thông dịch các script nhúng