PDF 可以包含比您在頁面上看到的更多內容。嵌入式 JavaScript、隱藏表單欄位、遠端資源呼叫和自訂元資料都可以用於追蹤文件何時開啟、從何處開啟以及讀者如何使用它。 PDF 安全 追蹤機制掃描正在成為業務盡職調查的標準步驟,特別是在從未知或不可信來源接收 PDF 時。問題不僅在於追蹤程式碼是否存在,還在於您是否擁有在開啟敏感文件之前檢測它的工具。
PDF 中的追蹤程式碼分為兩類:故意的和良性的。有意追蹤使用 JavaScript 在文件開啟時打電話回家,將開啟者的 IP 位址、大致位置和閱讀持續時間傳送到追蹤伺服器。良性追蹤包括嵌入 PDF 發票中的已讀收據或在顯示內容之前驗證許可證的數位版權管理等功能。兩種類型都使用相似的技術機制,而此處所述的檢測方法適用於這兩種類型。
WukongPDF 的PDF 隱私 功能包括安全檢查工具,可在處理前掃描文件中的嵌入腳本。在開啟來自陌生寄件者的 PDF 之前執行快速檢查會增加一層防止追蹤的保護,而大多數 PDF 讀取器預設並未提供這種保護。

PDF 追蹤代碼的技術工作原理
PDF 檔案透過 Acrobat JavaScript API 支援 JavaScript,Acrobat JavaScript API 是在 PDF 閱讀器的腳本引擎中執行的 JavaScript 子集。當開啟 PDF、檢視頁面、列印文件或關閉文件時,文件級腳本會自動執行。追蹤腳本通常在 DocOpen 事件上執行,透過 HTTP 請求收集透過 JavaScript API 提供的資訊(例如讀者的 IP 位址),並使用 app.launchURL 或 Net.HTTP.request 方法將該資料傳送到遠端伺服器。
與瀏覽器 JavaScript 相比,PDF JavaScript 可以收集的資料有限。它無法存取使用者電腦上的文件、讀取瀏覽器 cookie 或與其他開啟的文件互動。然而,它可以發出網路請求,這是實現追蹤的核心功能。在啟用 JavaScript 的 Adobe Acrobat Reader 中開啟的 PDF 將靜默執行追蹤腳本。在不支援 Acrobat JavaScript API 的基於瀏覽器的檢視器中開啟的 PDF 將不會執行該腳本,並且追蹤嘗試會自動失敗。
嘗試保護 PDF
無需安裝。直接在您的瀏覽器中工作。
方法 1:在 Adobe Acrobat Pro 中檢查 JavaScript
檢查追蹤程式碼的最直接方法是檢查 PDF 的 JavaScript 內容。在 Adobe Acrobat Pro 中,開啟 PDF,前往“編輯”選單,選擇“首選項”,然後按一下“JavaScript”類別。取消選取啟用 Acrobat JavaScript 可全域停用閱讀器中的所有 JavaScript 執行。這可以防止在您開啟檔案時執行任何追蹤腳本。在停用 JavaScript 之前,您可以檢查存在哪些腳本而不執行它們。
若要檢查腳本,請在 Acrobat Pro 中開啟 PDF,然後前往“工具”,然後前往“JavaScript”,然後從下拉清單中選擇“文件 JavaScript”。此對話方塊按名稱列出每個文檔級腳本。選擇腳本名稱並點擊“編輯”以查看其原始程式碼。尋找指示追蹤的模式:指向外部網域的 URL、app.launchURL 呼叫、Net.HTTP.request 呼叫或對 this.docOpened 或 this.docClosed 事件的引用。如果腳本發出網路請求,並且您不希望文件需要網路訪問,請將其視為潛在的追蹤程式碼。
您可以從「文件 JavaScript」對話方塊中刪除單一腳本。選擇腳本名稱並點擊刪除。刪除所有可疑腳本後,以新檔案名稱儲存 PDF,以保留原始檔案作為證據。清理後的 PDF 保留所有可見內容和表單功能,但不再執行已刪除的腳本。
方法 2:使用文字編輯器檢查 PDF 內部
若要進行不需要 Acrobat Pro 的更深入檢查,請檢查 PDF 的原始內部結構。 PDF 檔案使用基於文字的物件格式,人類可讀的字串和關鍵字與二進位資料交織。在能夠處理大檔案的文字編輯器中開啟 PDF,例如 VS Code、Notepad++ 或 Sublime Text。搜尋字串 /JavaScript 或 /JS。這些關鍵字標記 JavaScript 程式碼物件的開始。腳本原始碼位於關鍵字之後,通常位於括號之間或流標記與結束流標記之間。
也可以搜尋 /URI 或 /URL 以找到 PDF 中嵌入的任何硬編碼網址。追蹤腳本可以包括追蹤伺服器的URL。搜尋 /AA 或 /OpenAction,它們是 PDF 字典鍵,用於指定開啟文件時要執行的動作。指向 JavaScript 物件的 /OpenAction 條目是在文件開啟時觸發追蹤程式碼的最常見機制。
這種手動檢查方法需要熟悉 PDF 語法,但可以擷取自動化工具可能錯過的追蹤程式碼。安全研究人員在網路釣魚調查中分析可疑 PDF 附件的技術與此相同。如果您發現追蹤結構並希望在不使用 Acrobat Pro 的情況下消除它們,則可以使用帶有 --remove-restrictions 標誌的 qpdf 等工具從原始 PDF 中刪除相關對象,但這種方法需要小心避免損壞檔案結構。
方法 3:自動 PDF 安全掃描器
一些免費和商業工具可以自動檢測 PDF 中的追蹤和惡意程式碼。 DID-SIEM 和類似的安全分析工具解析 PDF 結構並標記包含 JavaScript、外部 URL、啟動操作和嵌入文件的物件。線上 PDF 安全檢查器接受文件上傳並傳回列出所有潛在可追蹤元素的報告。對於從外部來源收到的 PDF 進行例行檢查,自動掃描器比手動檢查更快、更徹底。
| 指示器 | 含義 | 如何檢查 |
|---|---|---|
| 文件 JavaScript | PDF 開啟、關閉或列印時執行的腳本 | Acrobat:編輯、首選項、JavaScript 面板 |
| 外部資源調用 | PDF 開啟時從遠端 URL 載入圖像、字體或數據 | 檢查嵌入 URL 的文檔屬性 |
| 隱藏表單字段 | 預填充追蹤 ID 或令牌的不可見字段 | 打開“表單”面板並尋找隱藏欄位標誌 |
| 元資料腳本 | 包含自訂追蹤識別碼的 XMP 元數據 | 查看文件屬性和原始 XMP 數據 |
如果發現追蹤代碼該怎麼辦
在您收到的 PDF 中找到追蹤程式碼並不一定意味著寄件者有惡意行為。 PDF 發票通常包含已讀回執腳本,用於在發票開啟時通知寄件者。行銷資料可能包括類似於電子郵件開啟追蹤像素的參與追蹤。問題是追蹤是否公開且適合文件類型。發票中應有已讀收據。談判期間發送的合約中的隱藏追蹤器是有問題的。
如果您需要在沒有追蹤程式碼的情況下與其他人共用文檔,請按照方法 1 中的說明刪除 JavaScript 並儲存乾淨的副本。如果追蹤程式碼是 DRM 或許可證執行系統的一部分,則刪除它可能會違反文件的使用條款。對於法律敏感文檔,請在剝離任何嵌入程式碼之前諮詢您組織的法律或安全團隊,因為追蹤機制可能是您根據合約有義務保留的合規性或審計追蹤系統的一部分。
使用正確的工具可以檢測 PDF 追蹤代碼。在打開來自陌生來源的 PDF 之前執行快速 JavaScript 檢查只需不到一分鐘的時間,並且可以捕獲大多數追蹤機制。將此檢查作為標準文件處理例程的一部分可以減少在不知不覺中與外部各方共享您的閱讀活動的可能性。對於處理敏感文件的組織來說,預設在 PDF 閱讀器中停用 JavaScript 並僅對可信任文件啟用 JavaScript 的策略提供了強大的基線防禦,無需對每個文件進行持續檢查。
在組織中的所有 PDF 讀取器中停用 JavaScript
對每個 PDF 進行單獨檢查以追蹤程式碼對於偶爾使用很實用,但無法擴展到每天接收數百個外部 PDF 的組織。更系統化的方法是在所有裝置的讀者層級停用 JavaScript 執行。在 Adobe Acrobat Reader 中,該設定位於「編輯」、「首選項」、「JavaScript」下,其中取消選取「啟用 Acrobat JavaScript」會阻止所有腳本執行。可以透過 Windows 上的群組原則、Mac 上的設定檔以及 Acrobat Reader 企業部署上的託管首選項來部署此設定。
全域禁用 JavaScript 確實會對功能產生影響。某些 PDF 表單使用 JavaScript 進行欄位驗證、自動計算和動態表單行為。當 JavaScript 被停用時,這些功能將停止運作。對於依賴互動式 PDF 表單的組織,方法應該是預設停用 JavaScript,並僅對來自受信任內部來源的表單啟用 JavaScript,而不是接受在每個外部寄件者的每個 PDF 上執行 JavaScript 的安全風險。用於追蹤程式碼的 PDF 安全檢查是一項現代文件讀寫技能。在打開或分享來自陌生來源的 PDF 之前,花一分鐘時間檢查 JavaScript、外部 URL 和隱藏的表單字段,可以防止大多數 PDF 用戶甚至不知道存在的微妙形式的資訊洩漏。具有安全意識的 PDF 處理方法可以保護個人隱私和組織資訊安全,而無需專門的軟體或高級技術知識。
嘗試保護 PDF
無需安裝。直接在您的瀏覽器中工作。
