Loaded Document Sanitisation

SanitiseLoadedDocument는 선택된 보안 policy를 로드된 객체 그래프 전체에 적용하고 컴팩트 전체 재작성을 준비합니다

Profiles

ProfileRemoved content
spJavaScriptOnly문서 JavaScript 이름 트리와 JavaScript action
spActiveContentJavaScript와 launch, 원격 내비게이션, URI, 제출, 가져오기, 멀티미디어, rendition, XFA 등 관련 active-content 항목
spUntrustedDocument모든 active content에 더해 action 자리에서 발견되는 내장 파일, associated 파일, 파일 첨부 주석, rich-media 페이로드 구조, 미지원 action 타입
spRichMediaOnlyrich-media 주석과 분리된 페이로드 stream
spRedactionCleanupRedact/파일 첨부 주석, 문서 정보, 메타데이터, associated/내장 파일, 그 제거로 도달 불가가 된 모든 객체

선언

function SanitiseLoadedDocument(Profile: THPDFSanitiseProfile;
  out Report: THPDFSanitiseReport): Boolean; overload;
function SanitiseLoadedDocument(
  out Report: THPDFSanitiseReport): Boolean; overload;
function ScrubLoadedRedactionRemnants(
  out Report: THPDFSanitiseReport): Boolean;

프로파일 없는 overload는 spUntrustedDocument를 씁니다

결과 보고서

THPDFSanitiseReport는 제거된 action, JavaScript 항목, 내장 파일, 위험 주석, XFA 항목, 페이로드 stream, 분리된 참조, 도달 불가 객체, 메타데이터 항목, Redact 주석, 버려진 이전 revision 바이트, 방문한 객체를 셉니다

Changed는 객체 그래프가 바뀌었는지 알려주고, LimitExceeded와 InvalidObjectGraph는 거부된 preflight의 사유를 설명합니다

안전과 성능

예제

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;

사용 참고 사항

관련 API