C# 中的 PDF 安全性:加密、權限與保護
IronPDF 為 C# 開發人員提供企業級工具,用於加密 PDF、套用密碼保護及實施權限控制——從 AES-128 和 AES-256 加密到細粒度的存取限制與數位簽章——並在 .NET 應用程式中全面支援 HIPAA 和 PCI-DSS 合規性。 無論您是要保護財務報告、法律合約還是醫療紀錄,IronPDF 的 PDF 安全性設定都能直接整合至您的工作流程中,無需依賴外部元件。
TL;DR:快速入門指南
本教學將透過 IronPDF,完整涵蓋 C# 環境下 PDF 安全的各個層面——包括加密、密碼、權限設定,以及符合合規標準的保護機制。
- 適用對象:開發需處理敏感文件的應用程式之 .NET 開發人員——例如金融系統、醫療保健平台、法律工具,或任何必須保護 PDF 文件免於未經授權存取、複製或修改的應用程式。
- 您將建置的內容:採用 AES-128/AES-256 加密的用戶與擁有者密碼保護、細粒度權限控制(PRINT、複製、編輯、註解)、加密檔案的解密與批次處理,以及適用於合規監管環境的文件淨化模式。
- 執行環境:任何 .NET 環境 — .NET 10、.NET 8 LTS、.NET Framework 4.6.2 以上版本,以及 .NET Standard 2.0。所有操作均在本地執行; 無需任何外部服務或可執行檔。
- 適用情境:當文件包含必須在靜止與傳輸過程中受到保護的敏感資料時——例如受 HIPAA 規範的醫療紀錄、符合 PCI-DSS 標準的財務報表、受 GDPR 規範的個人資料,或是不得轉發或列印的內部文件。
- 技術層面的重要性:依賴視覺覆蓋層或未加密檔案的 PDF"安全性",會使內容容易遭到輕易提取。 IronPDF 在檔案結構層級實施加密 — 未經正確憑證驗證,受密碼保護的文件將無法開啟、複製或修改。
只需幾行程式碼即可保護 PDF 檔案:
-
using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf
PM > Install-Package IronPdf -
請複製並執行此程式碼片段。
using IronPdf; var pdf = PdfDocument.FromFile("sensitive-document.pdf"); pdf.SecuritySettings.OwnerPassword = "admin-secure-key"; pdf.SecuritySettings.UserPassword = "user-access-key"; pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrinting; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SaveAs("secured-document.pdf"); -
部署至您的生產環境進行測試
立即透過免費試用,在您的專案中開始使用 IronPDF
購買 IronPDF 或註冊 30 天試用版後,請在應用程式啟動時輸入您的授權金鑰。
IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "KEY"
目錄
- PDF 安全層解析
- 密碼保護基礎
- 細粒度權限控制
- 開啟並解密受保護的 PDF 檔案
- 軍事與機密文件安全
- 應避免的安全反模式
PDF 安全層解析
理解 PDF 安全性的分層方法,對於實施有效的文件保護至關重要。 PDF 安全性運作於多個層級,每個層級皆提供不同類型的保護,並在您的整體安全策略中發揮各異的作用。
理解加密標準
IronPDF 採用 Enterprise 級 128 位元加密技術,為您的敏感檔案提供安全保障。 加密是 PDF 安全的基石,它將文件內容轉換為不可讀的資料,僅授權使用者才能存取。
AES-128 加密
AES-128 長期以來一直是 PDF 保護的業界標準。 它透過 128 位元金鑰,為財務檔案、合約及內部紀錄等商業文件提供強大的安全性,此金鑰的複雜度使得透過暴力破解的方式幾乎不可能被攻破。
此 128 位元加密標準與 Adobe Acrobat 7 及後續版本相容,在確保強大安全性的同時,亦能與各類 PDF 閱讀器廣泛相容。 對於大多數 Enterprise 應用程式而言,AES-128 在安全性與處理效能之間提供了絕佳的平衡。

AES-256 加密
IronPDF 支援 128 位元與 256 位元 AES 加密,能靈活因應各種安全需求。 AES-256 採用 256 位元金鑰,其防護強度遠高於 AES-128。政府機關常將其用於機密文件,以符合處理敏感資訊的規範要求。
AES-256 的主要取捨在於處理開銷略微增加以及相容性考量——需使用 Adobe Acrobat X 或更新版本才能獲得完整支援。 然而,對於處理高度敏感資料的應用程式——例如受《健康保險流通與責任法案》(HIPAA)規範的醫療紀錄、需符合《支付卡產業資料安全標準》(PCI-DSS)的金融交易,或具機密分級要求的政府文件——額外的安全保障絕對值得付出這微小的效能代價。
使用者密碼與擁有者密碼
開啟並檢視 PDF 文件需輸入使用者密碼(或開啟密碼),而擁有者密碼(或權限密碼)則用於控制使用者對該文件可執行的操作。 此雙重密碼系統為不同的文件工作流程提供了靈活的安全控制。
user password 是存取文件的主要障礙。 一旦設定,任何嘗試開啟該 PDF 檔案的人都必須輸入此密碼。 這是您將與獲授權的讀者分享的密碼,這些讀者應能查看文件內容。 請將其視為"讀取權限"憑證。
owner password 則完全用於其他目的。 擁有者密碼是用來啟用或停用所有其他安全性設定的密碼。 此密碼用以控制誰能修改文件的安全設定、變更權限,或完全移除保護。 即使使用者能使用其使用者密碼開啟文件,若未持有擁有者的密碼,仍無法變更該文件的安全設定或繞過權限限制。
這種分離機制可實現複雜的存取控制情境。 舉例來說,您可以發佈一份附有使用者密碼的合約,讓所有當事方都能閱讀,但只有文件建立者(持有擁有者密碼者)才能修改安全性設定,或建立具有不同限制的版本。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-user-owner-passwords--1.cs
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// User password required to open/view the PDF
pdf.SecuritySettings.UserPassword = "view-access-2024";
// Owner password required to modify security settings
pdf.SecuritySettings.OwnerPassword = "admin-master-key";
// Disable printing for users without owner password
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
// Disable copy/paste of content
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("output-secured.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("input.pdf")
' User password required to open/view the PDF
pdf.SecuritySettings.UserPassword = "view-access-2024"
' Owner password required to modify security settings
pdf.SecuritySettings.OwnerPassword = "admin-master-key"
' Disable printing for users without owner password
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint
' Disable copy/paste of content
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("output-secured.pdf")
權限限制框架
除了密碼保護之外,PDF 安全性還包含一套全面的權限系統,能精確定義使用者開啟文件後可執行的操作。 權限標記決定是否允許列印、複製內容、編輯、註解以及表單資料輸入。
權限框架的運作與使用者密碼相互獨立。 您可以設定使用者密碼,並指定該使用者可執行的操作。 此外,您也可以不設定使用者密碼而保持文件開啟狀態,但仍限制某些操作——儘管此設定提供的安全性有限,因為在沒有密碼保護的情況下,這些限制更容易被繞過。
權限控制包括:
- 列印限制:控制使用者是否能進行列印,若允許,則設定列印品質
- 內容擷取:防止從文件中複製文字和圖片
- 文件修改:限制對實際文件內容的編輯
- 註解與評論:控制使用者是否能新增筆記或評論
- 表單欄位操作:判斷使用者是否能填寫表單欄位
- 文件組裝:控制頁面的操作,例如插入、刪除或旋轉
這些細緻的控制功能讓您能根據特定使用情境調整文件安全性,確保使用者僅擁有其所需的存取權限——不多也不少。
密碼保護基礎
在 C# 應用程式中使用 IronPDF 實作密碼保護相當簡單,但理解其中的細微差異,才能確保您正確且有效地實施安全措施。
安裝 IronPDF
在實作 PDF 安全性功能之前,您需要將 IronPDF 安裝至您的 .NET 專案中。 此函式庫支援 .NET Framework、.NET Core 及 .NET 5+,使其幾乎能與任何現代 .NET 應用程式相容。
您可以透過 NuGet 套件管理主控台安裝 IronPDF:
Install-Package IronPdf
或使用 .NET CLI:
dotnet add package IronPdf
安裝完成後,請在您的程式碼中加入必要的 using 語句:
using IronPdf;
using IronPdf.Security;
using IronPdf;
using IronPdf.Security;
Imports IronPdf
Imports IronPdf.Security
設定使用者密碼(開啟時必填)
您可以設定 UserPassword 屬性,要求開啟檔案時需輸入密碼。這代表 PDF 安全性的最基本層級——確保只有持有密碼的人才能檢視文件內容。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-set-user-password--2.cs
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// Set user password - anyone opening this PDF must provide this password
pdf.SecuritySettings.UserPassword = "Secure#Password2024!";
pdf.SaveAs("output-protected.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("input.pdf")
' Set user password - anyone opening this PDF must provide this password
pdf.SecuritySettings.UserPassword = "Secure#Password2024!"
pdf.SaveAs("output-protected.pdf")
當設定使用者密碼時,IronPDF 支援 128 位元加密以保護文件內容。 當任何人嘗試開啟該檔案時,PDF 閱讀器會提示輸入此密碼;若未輸入正確密碼,文件將保持加密狀態且無法閱讀。
使用者密碼的最佳實務:
- 使用包含大寫字母、小寫字母、數字及特殊字元的強密碼
- 避免使用常見詞彙或易於猜測的模式
- 建議使用密碼產生工具以確保最高安全性
- 使用成熟的密碼管理系統安全地儲存密碼
- 切勿在生產環境的原始碼或設定檔中嵌入密碼
範例輸出(開啟受密碼保護的 PDF)

設定擁有者密碼(編輯時必填)
擁有者密碼可提供更高層級的文件控制權。 @@-- 必須將 OwnerPassword 設定為非空字串值,才能對 AllowUserPrinting 及 AllowUserEdits 進行限制。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-set-owner-password--3.cs
using IronPdf;
using IronPdf.Security;
var pdf = PdfDocument.FromFile("sample-pdf.pdf");
// Owner password enables restrictions without requiring password to open
pdf.SecuritySettings.OwnerPassword = "admin-control-2024";
// Prevent printing without owner password
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
// Disable copy/paste functionality
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
// Prevent any editing without owner password
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SaveAs("output-owner-protected.pdf");
Imports IronPdf
Imports IronPdf.Security
Dim pdf = PdfDocument.FromFile("sample-pdf.pdf")
' Owner password enables restrictions without requiring password to open
pdf.SecuritySettings.OwnerPassword = "admin-control-2024"
' Prevent printing without owner password
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
' Disable copy/paste functionality
pdf.SecuritySettings.AllowUserCopyPasteContent = False
' Prevent any editing without owner password
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit
pdf.SaveAs("output-owner-protected.pdf")
翻譯範例
上述程式碼片段會建立一份任何人都能開啟的文件(無需使用者密碼),但該文件仍受權限限制所規範。 若要修改安全性設定或解除限制,您必須知道擁有者密碼。 此做法常見於公開文件,當您希望控制文件的使用方式,但未必需要限制瀏覽時。
加密強度選項
IronPDF 支援 128 位元加密以確保文件安全,當您為 PDF 文件設定密碼或權限時,此加密功能會自動生效。 加密過程是透明的——您無需明確設定加密演算法或模式,因為當您套用安全性設定時,IronPDF 會自動處理這一切。
IronPDF 所採用的 128 位元加密技術提供強大的保護,適用於商業、法律及大多數政府應用場景。 加密是在內容層級進行的,這意味著實際的文字、圖片和文件結構都會被加密,而不僅僅是實施存取控制。
細粒度權限控制
PDF 安全性的最大優勢之一,在於能夠設定細粒度的權限,精確控制使用者對文件的操作範圍。 IronPDF 提供廣泛的權限控制功能,其範圍遠超出簡單的讀寫存取權限。
管理列印權限
IronPDF 讓您能夠控制列印權限,協助您管理哪些人可以列印您的 PDF 文件。 對於包含機密資訊、受版權保護的內容或受法規限制之資料的文件而言,列印限制尤為重要。
若PRINT權限受限,則必須設定 OwnerPassword 才能使安全措施生效。 這可確保未經適當授權的情況下,無法輕易解除權限限制。 以下部分將展示所有可用的PRINT權限等級。
高品質與低品質列印設定
IronPDF 提供超越簡單"允許/拒絕"設定的進階列印權限控制功能。 PdfPrintSecurity 枚舉提供三種層級的 PRINT 控制:
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-print-quality--4.cs
using IronPdf;
using IronPdf.Security;
// Allow low-resolution printing only (150 DPI)
var pdf1 = PdfDocument.FromFile("input.pdf");
pdf1.SecuritySettings.OwnerPassword = "admin-key-2024";
pdf1.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;
pdf1.SaveAs("output-low-res-print.pdf");
// Disable printing completely
var pdf2 = PdfDocument.FromFile("input.pdf");
pdf2.SecuritySettings.OwnerPassword = "secret-admin-key";
pdf2.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf2.SaveAs("output-no-print.pdf");
// Allow full high-quality printing
var pdf3 = PdfDocument.FromFile("input.pdf");
pdf3.SecuritySettings.OwnerPassword = "owner-key";
pdf3.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf3.SaveAs("output-full-print.pdf");
Imports IronPdf
Imports IronPdf.Security
' Allow low-resolution printing only (150 DPI)
Dim pdf1 = PdfDocument.FromFile("input.pdf")
pdf1.SecuritySettings.OwnerPassword = "admin-key-2024"
pdf1.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality
pdf1.SaveAs("output-low-res-print.pdf")
' Disable printing completely
Dim pdf2 = PdfDocument.FromFile("input.pdf")
pdf2.SecuritySettings.OwnerPassword = "secret-admin-key"
pdf2.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf2.SaveAs("output-no-print.pdf")
' Allow full high-quality printing
Dim pdf3 = PdfDocument.FromFile("input.pdf")
pdf3.SecuritySettings.OwnerPassword = "owner-key"
pdf3.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf3.SaveAs("output-full-print.pdf")
NoPrinting:完全停用 PDF 閱讀器中的列印功能。 這是限制性最嚴格的選項,適用於絕不應列印的文件,例如僅限數位使用的授權文件,或應僅以電子形式保存的高度機密資訊。
LowResolutionPrinting:允許列印,但將輸出品質限制為低解析度(通常為 150 DPI)。 此選項適用於您希望允許列印參考副本,但同時希望防止高品質複製的文件。 常見的使用情境包括受版權保護的資料、預覽副本或文件草稿。
FullPrintRights:支援無限制的高解析度PRINT。 這能讓使用者獲得與未受保護文件相同的列印品質。
控制複製/貼上操作
防止內容複製(停用文字與圖片選取功能)是保護智慧財產權、機密資料及受版權保護內容的一項關鍵安全功能。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-copy-paste--5.cs
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// Owner password required for copy/paste restrictions
pdf.SecuritySettings.OwnerPassword = "content-protection-key";
// Prevent users from selecting and copying text or images
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("output-no-copy.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("input.pdf")
' Owner password required for copy/paste restrictions
pdf.SecuritySettings.OwnerPassword = "content-protection-key"
' Prevent users from selecting and copying text or images
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("output-no-copy.pdf")
當複製/貼上功能被停用時,使用者將無法從 PDF 中選取並複製文字或圖片。 這可防止內容被輕易擷取用於未經授權之用途、剽竊或竊取資料。 然而,必須理解這僅是 PDF 閱讀器的防護措施——若攻擊者使用專業工具且意圖堅決,仍可能提取內容,因此加密與密碼保護是重要的輔助措施。
若 AllowUserCopyPasteContent 設定為 false,則 OwnerPassword 也必須設定,此安全措施方能生效,以確保這些限制無法輕易被繞過。
限制文件編輯
文件編輯限制會阻止使用者修改 PDF 檔案的實際內容。 停用編輯功能可確保文件完整性,並防止未經授權的修改。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-editing-restrictions--6.cs
using IronPdf;
using IronPdf.Security;
// Prevent any content modifications
var pdf1 = PdfDocument.FromFile("input.pdf");
pdf1.SecuritySettings.OwnerPassword = "contract-admin-2024";
pdf1.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf1.SaveAs("output-locked.pdf");
// Allow page organization only (rotate, reorder, delete pages)
var pdf2 = PdfDocument.FromFile("input.pdf");
pdf2.SecuritySettings.OwnerPassword = "form-admin-key";
pdf2.SecuritySettings.AllowUserEdits = PdfEditSecurity.EditPages;
pdf2.SaveAs("output-edit-pages.pdf");
// Allow all editing operations
var pdf3 = PdfDocument.FromFile("input.pdf");
pdf3.SecuritySettings.OwnerPassword = "draft-admin";
pdf3.SecuritySettings.AllowUserEdits = PdfEditSecurity.EditAll;
pdf3.SaveAs("output-editable.pdf");
Imports IronPdf
Imports IronPdf.Security
' Prevent any content modifications
Dim pdf1 = PdfDocument.FromFile("input.pdf")
pdf1.SecuritySettings.OwnerPassword = "contract-admin-2024"
pdf1.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit
pdf1.SaveAs("output-locked.pdf")
' Allow page organization only (rotate, reorder, delete pages)
Dim pdf2 = PdfDocument.FromFile("input.pdf")
pdf2.SecuritySettings.OwnerPassword = "form-admin-key"
pdf2.SecuritySettings.AllowUserEdits = PdfEditSecurity.EditPages
pdf2.SaveAs("output-edit-pages.pdf")
' Allow all editing operations
Dim pdf3 = PdfDocument.FromFile("input.pdf")
pdf3.SecuritySettings.OwnerPassword = "draft-admin"
pdf3.SecuritySettings.AllowUserEdits = PdfEditSecurity.EditAll
pdf3.SaveAs("output-editable.pdf")
PdfEditSecurity 枚舉可對允許的編輯類型進行細部控制:
NoEdit:完全禁止對文件內容進行任何修改。 此為最嚴格的設定,可確保文件絕不會以任何形式被修改。
AddOrModifyTextAnnotations:允許使用者添加文字註解和評論,但禁止直接修改文件內容。 此功能適用於需要徵求意見但希望保留原始文件的審核工作流程。
FillInFormsAndSignatures:允許填寫表單欄位及添加簽名,同時防止其他編輯操作。 這是針對需填寫但無需其他修改之 PDF 表單的標準設定。
DocumentAssemblyAndTextAnnotations:支援文件組裝操作(例如插入或刪除頁面),以及文字註解功能。
AllEditRights:允許進行所有編輯操作,無任何限制。
註解與評論的管理
AllowUserAnnotations 控制使用者是否能對 PDF 進行註解。 註解控制在法律、合規及協作文件工作流程中尤為重要。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-annotations--7.cs
using IronPdf;
var pdf = PdfDocument.FromFile("input.pdf");
// Owner password required for annotation restrictions
pdf.SecuritySettings.OwnerPassword = "legal-admin-2024";
// Prevent adding comments, highlights, or other markup
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SaveAs("output-no-annotations.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("input.pdf")
' Owner password required for annotation restrictions
pdf.SecuritySettings.OwnerPassword = "legal-admin-2024"
' Prevent adding comments, highlights, or other markup
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SaveAs("output-no-annotations.pdf")
停用註解功能將阻止使用者在文件中新增評論、標示、標記或其他任何註解。 此舉可確保文件內容保持原貌,並避免因未經授權的註解或評論而造成混淆。
停用註解的常見使用情境包括:
- 法律合約的最終版本
- 公司官方文件
- 法規申報文件
- 已發布的報告不應進行標記
- 經認證或公證之文件
反之,在審閱流程中,若希望獲得回饋但同時維持底層文件的完整性,啟用註解功能並限制編輯權限將是極具價值的做法。
如需進一步了解上述程式碼片段的詳細說明,並探索更多安全性功能,請參閱我們的完整操作指南。
開啟與解密受保護的 PDF 檔案
若要透過程式化方式處理受保護的 PDF 文件,必須了解如何在程式碼中正確提供憑證,並妥善處理加密文件。
透過程式設計提供密碼
在使用 PdfDocument.FromFile 載入 PDF 檔案時,您可以將開啟加密 PDF 的密碼作為第二個參數傳入。 這使您的應用程式能夠在無需使用者介入的情況下處理受保護的文件。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-open-encrypted--8.cs
using IronPdf;
// Open password-protected PDF
var password = "user-access-2024";
var pdf = PdfDocument.FromFile("protected.pdf", password);
// Work with the decrypted document
var text = pdf.ExtractAllText();
// Modify and save
pdf.SaveAs("output-processed.pdf");
// Note: For production, use secure password storage (environment variables, key vaults)
Imports IronPdf
' Open password-protected PDF
Dim password As String = "user-access-2024"
Dim pdf As PdfDocument = PdfDocument.FromFile("protected.pdf", password)
' Work with the decrypted document
Dim text As String = pdf.ExtractAllText()
' Modify and save
pdf.SaveAs("output-processed.pdf")
' Note: For production, use secure password storage (environment variables, key vaults)
此方法對於需要透過程式化方式處理受保護 PDF 的自動化工作流程至關重要。 常見應用情境包括:
- 自動化文件處理流程
- 排程報告生成
- 批次轉換操作
- 與文件管理系統的整合
- 自動化歸檔流程
重要安全考量:
- 切勿在原始碼中硬編碼密碼
- 使用安全的配置管理(Azure Key Vault、AWS Secrets Manager 等)
- 針對密碼儲存實施適當的存取控制
- 使用環境變數或安全配置檔案
- 針對高度敏感的應用程式,請考慮採用基於憑證的安全機制
移除安全限制
若需移除密碼與加密內容,請使用 RemovePasswordsAndEncryption 方法。 此功能在需要移除文件中的安全保護時至關重要,但需具備適當的授權以防止未經授權的存取。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-remove-restrictions--9.cs
using IronPdf;
var pdf = PdfDocument.FromFile("protected.pdf", "owner-password-2024");
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SaveAs("output-unprotected.pdf");
Imports IronPdf
Dim pdf = PdfDocument.FromFile("protected.pdf", "owner-password-2024")
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SaveAs("output-unprotected.pdf")
移除 PDF 文件的所有使用者及擁有者密碼安全設定,也會同時停用內容加密功能。 最終產出的文件將完全未受保護,可無任何限制地開啟、檢視、編輯及列印。
何時應移除安全防護:
- 為無法處理加密 PDF 的歸檔系統準備文件
- 遷移至不同的安全機制
- 建立先前受保護文件的公開發行版本
- 解決與舊版 PDF 閱讀器的相容性問題
- 準備文件以供與需要未加密輸入的系統進行整合
批次處理加密檔案
當處理多個受保護的 PDF 文件時,您可以透過批次處理功能,高效處理整個目錄中的加密文件。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-batch-processing--10.cs
using IronPdf;
using System;
using System.IO;
string inputDir = "./input";
string outputDir = "./output";
Directory.CreateDirectory(outputDir);
var pdfFiles = Directory.GetFiles(inputDir, "*.pdf");
string password = "batch-process-2024";
foreach (var pdfPath in pdfFiles)
{
try
{
PdfDocument pdf;
try
{
pdf = PdfDocument.FromFile(pdfPath, password);
}
catch
{
pdf = PdfDocument.FromFile(pdfPath);
}
var text = pdf.ExtractAllText();
pdf.SecuritySettings.RemovePasswordsAndEncryption();
string fileName = Path.GetFileName(pdfPath);
string outputPath = Path.Combine(outputDir, fileName);
pdf.SaveAs(outputPath);
}
catch (Exception ex)
{
// Handle errors as needed
}
}
Imports IronPdf
Imports System
Imports System.IO
Dim inputDir As String = "./input"
Dim outputDir As String = "./output"
Directory.CreateDirectory(outputDir)
Dim pdfFiles = Directory.GetFiles(inputDir, "*.pdf")
Dim password As String = "batch-process-2024"
For Each pdfPath In pdfFiles
Try
Dim pdf As PdfDocument
Try
pdf = PdfDocument.FromFile(pdfPath, password)
Catch
pdf = PdfDocument.FromFile(pdfPath)
End Try
Dim text = pdf.ExtractAllText()
pdf.SecuritySettings.RemovePasswordsAndEncryption()
Dim fileName As String = Path.GetFileName(pdfPath)
Dim outputPath As String = Path.Combine(outputDir, fileName)
pdf.SaveAs(outputPath)
Catch ex As Exception
' Handle errors as needed
End Try
Next
此模式對於需要以下功能的Enterprise场景非常有用:
- 處理整個文件儲存庫
- 在所有文件集中貫徹一致的安全政策
- 將加密文件遷移至新的安全標準
- 對受保護的文件進行批量分析或內容擷取
- 實作自動化合規工作流程
針對批次處理,請考慮實作:
- 針對無效密碼或損壞檔案進行適當的錯誤處理
- 安全操作的記錄以建立稽核追蹤
- 針對長時間執行的操作提供進度報告
- 透過並行處理提升大型文件集的處理效能
- 安全清理已解密之臨時檔案
軍事與機密文件安全
對於處理機密資訊、政府文件或需要軍用級安全防護的資料之組織而言,PDF 保護功能遠不止於基本的密碼保護,而是延伸至全面性的安全框架。
超越密碼保護
雖然密碼保護和加密是 PDF 安全性的基礎,但真正安全的文件處理需要採取分層式方法,以應對多種攻擊途徑並滿足合規要求。
多重驗證整合:對於機密文件,僅靠密碼保護是不夠的。 請考慮建置需同時具備密碼及額外驗證因素(例如智慧卡憑證、硬體安全令牌或生物特徵驗證)方能存取 PDF 的系統。
硬體安全模組 (HSM):對於基於 HSM 的解決方案,私密金鑰無法被匯出。 相反地,簽名作業是由 USB 隨身碟上的韌體負責執行。 這確保了加密金鑰絕不會離開安全的硬體環境,為機密文件的數位簽章提供最高等級的金鑰保護。
靜態與傳輸中的加密:機密文件不僅在儲存時需要保護,在傳輸過程中也必須受到保護。 針對受保護 PDF 的任何網路傳輸,均須實施傳輸層安全性 (TLS),並確保儲存系統採用符合 FIPS 140-2 驗證標準的加密模組進行全磁碟加密。
解密前的文件淨化處理
對機密文件進行淨化處理,是指移除足夠多的資訊,以將其機密等級從較高層級降至較低層級。 此流程對於處理機密資料且最終需對外公開的政府機關及承包商而言至關重要。
重要提示:請務必完全移除敏感內容,而非僅進行視覺遮蔽——請參閱"安全反模式"章節中的"視覺遮蔽"部分,了解此舉的重要性。
適當的資料淨化需透過程式化方式清除所有元資料欄位、自訂屬性及隱藏內容。 PDF 文件通常會保留先前版本、註解及嵌入式資料,其中可能包含機密資訊。 請參閱下方的"元資料外洩"章節,以了解實作細節及完整的資料淨化檢查清單。
針對解密工作流程,請實施多步驟流程:
- 識別需進行遮蔽處理的機密內容
- 移除(而非遮蔽)機密文字與圖片
- 移除所有元資料與隱藏內容
- 移除嵌入的檔案與腳本
- 透過自動化與人工審查驗證內容淨化
- 適用適當的降級分類標記
- 維持解密行動的稽核追蹤紀錄
稽核追蹤與存取記錄
對於機密文件而言,建立完整的稽核追蹤不僅是最佳實務,根據《第 13526 號行政命令》等針對國家安全資訊的法規,這往往更是強制性要求。
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-audit-logging--11.cs
using IronPdf;
using System;
using System.IO;
using System.Text.Json;
var handler = new SecureDocumentHandler();
handler.OpenClassifiedDocument(
"classified.pdf",
"classified-password",
"john.doe@agency.gov",
"192.168.1.100"
);
handler.LogPrintOperation(
"classified.pdf",
"john.doe@agency.gov",
"192.168.1.100"
);
ic class PdfAuditLog
public DateTime Timestamp { get; set; }
public string Username { get; set; }
public string Operation { get; set; }
public string DocumentPath { get; set; }
public string IpAddress { get; set; }
public bool Success { get; set; }
public string Details { get; set; }
ic class SecureDocumentHandler
private readonly string auditLogPath = "./logs/audit.log";
public void OpenClassifiedDocument(string documentPath, string password, string username, string ipAddress)
{
var auditEntry = new PdfAuditLog
{
Timestamp = DateTime.UtcNow,
Username = username,
Operation = "OPEN",
DocumentPath = documentPath,
IpAddress = ipAddress,
Success = false,
Details = ""
};
try
{
var pdf = PdfDocument.FromFile(documentPath, password);
auditEntry.Success = true;
auditEntry.Details = "Document opened successfully";
LogAuditEntry(auditEntry);
}
catch (Exception ex)
{
auditEntry.Success = false;
auditEntry.Details = $"Failed: {ex.Message}";
LogAuditEntry(auditEntry);
throw;
}
}
public void LogPrintOperation(string documentPath, string username, string ipAddress)
{
var auditEntry = new PdfAuditLog
{
Timestamp = DateTime.UtcNow,
Username = username,
Operation = "PRINT",
DocumentPath = documentPath,
IpAddress = ipAddress,
Success = true,
Details = "Document printed"
};
LogAuditEntry(auditEntry);
}
private void LogAuditEntry(PdfAuditLog entry)
{
Directory.CreateDirectory(Path.GetDirectoryName(auditLogPath));
string jsonEntry = JsonSerializer.Serialize(entry);
File.AppendAllText(auditLogPath, jsonEntry + Environment.NewLine);
}
Imports IronPdf
Imports System
Imports System.IO
Imports System.Text.Json
Module Program
Sub Main()
Dim handler As New SecureDocumentHandler()
handler.OpenClassifiedDocument(
"classified.pdf",
"classified-password",
"john.doe@agency.gov",
"192.168.1.100"
)
handler.LogPrintOperation(
"classified.pdf",
"john.doe@agency.gov",
"192.168.1.100"
)
End Sub
End Module
Public Class PdfAuditLog
Public Property Timestamp As DateTime
Public Property Username As String
Public Property Operation As String
Public Property DocumentPath As String
Public Property IpAddress As String
Public Property Success As Boolean
Public Property Details As String
End Class
Public Class SecureDocumentHandler
Private ReadOnly auditLogPath As String = "./logs/audit.log"
Public Sub OpenClassifiedDocument(documentPath As String, password As String, username As String, ipAddress As String)
Dim auditEntry As New PdfAuditLog With {
.Timestamp = DateTime.UtcNow,
.Username = username,
.Operation = "OPEN",
.DocumentPath = documentPath,
.IpAddress = ipAddress,
.Success = False,
.Details = ""
}
Try
Dim pdf = PdfDocument.FromFile(documentPath, password)
auditEntry.Success = True
auditEntry.Details = "Document opened successfully"
LogAuditEntry(auditEntry)
Catch ex As Exception
auditEntry.Success = False
auditEntry.Details = $"Failed: {ex.Message}"
LogAuditEntry(auditEntry)
Throw
End Try
End Sub
Public Sub LogPrintOperation(documentPath As String, username As String, ipAddress As String)
Dim auditEntry As New PdfAuditLog With {
.Timestamp = DateTime.UtcNow,
.Username = username,
.Operation = "PRINT",
.DocumentPath = documentPath,
.IpAddress = ipAddress,
.Success = True,
.Details = "Document printed"
}
LogAuditEntry(auditEntry)
End Sub
Private Sub LogAuditEntry(entry As PdfAuditLog)
Directory.CreateDirectory(Path.GetDirectoryName(auditLogPath))
Dim jsonEntry As String = JsonSerializer.Serialize(entry)
File.AppendAllText(auditLogPath, jsonEntry & Environment.NewLine)
End Sub
End Class
必備審核要點:
- 存取事件:記錄每個文件的開啟、檢視、PRINT及關閉操作
- 使用者識別:記錄所有存取該文件之經認證的使用者身分
- 時間戳記:透過同步時鐘維持精確的時間記錄
- 操作類型:區分檢視、列印、編輯及其他操作
- 結果:記錄操作的成功或失敗
- 來源資訊:擷取 IP 位址、機器識別碼,以及可用的位置資料
稽核日誌保護:稽核日誌本身已屬敏感資訊,必須加以保護:
- 將日誌與其所追蹤的文件分開儲存
- 對稽核資料套用加密
- 實作唯增式日誌儲存機制以防止竄改
- 使用加密簽名來確保日誌的完整性
- 定期備份至安全的異地位置
- 定義符合法規要求的保存期限
結合加密與數位簽章
數位簽章可為 PDF 文件提供驗證與完整性保障。 透過使用 IronPDF,您可以確保文件是由經過驗證的來源簽署,且自簽署以來未曾被竄改。
對於機密文件,結合加密與數位簽章可同時確保機密性與真實性:
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-digital-signatures--12.cs
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
var pdf = PdfDocument.FromFile("input.pdf");
// Apply encryption
pdf.SecuritySettings.UserPassword = "view-classified-2024";
pdf.SecuritySettings.OwnerPassword = "admin-classified-2024";
// Digital signature requires external certificate file (certificate.pfx)
// In production: use certificates from trusted Certificate Authorities and secure hardware (HSM)
var certificate = new X509Certificate2("certificate.pfx", "cert-password");
var signature = new PdfSignature(certificate)
{
SigningContact = "security@agency.gov",
SigningReason = "Document Certification",
SigningLocation = "Washington DC, USA"
};
pdf.Sign(signature);
pdf.SaveAs("output-signed-encrypted.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Dim pdf = PdfDocument.FromFile("input.pdf")
' Apply encryption
pdf.SecuritySettings.UserPassword = "view-classified-2024"
pdf.SecuritySettings.OwnerPassword = "admin-classified-2024"
' Digital signature requires external certificate file (certificate.pfx)
' In production: use certificates from trusted Certificate Authorities and secure hardware (HSM)
Dim certificate As New X509Certificate2("certificate.pfx", "cert-password")
Dim signature As New PdfSignature(certificate) With {
.SigningContact = "security@agency.gov",
.SigningReason = "Document Certification",
.SigningLocation = "Washington DC, USA"
}
pdf.Sign(signature)
pdf.SaveAs("output-signed-encrypted.pdf")
機密文件的數位簽章元件:
憑證鏈驗證:憑證的允許用途列於憑證的 ASN.1 編碼延伸屬性中。 針對機密文件,請確保憑證由經核准的憑證授權機構簽發,並包含適當的"擴展金鑰用途"屬性。
時間戳記權威機構:任何時間戳記均應包含時間戳記服務權威機構(TSA)的憑證。 這提供了文件簽署時間的加密證明,對於法律與合規要求至關重要。
長期驗證 (LTV):針對未來數年仍需驗證的文件(常見於機密資料),應實施 LTV 簽名,將所有驗證資訊內嵌於文件本身,確保即使憑證授權機構無法存取時,仍能進行簽名驗證。
不可否認性:數位簽章提供不可否認性——簽署者無法否認曾簽署該文件。 對於機密文件而言,這點至關重要,因為問責制與來源歸屬是首要考量。
如需有關如何使用 IronPDF 實施數位簽名的更詳細指引,請參閱我們的詳細簽名教學指南。
應避免的安全反模式
了解 PDF 安全性中哪些功能行不通,與了解哪些功能有效同樣重要。 這些反模式代表了常見的錯誤,它們會營造出虛假的安全感,同時卻讓文件暴露於風險之中。
輕易就能繞過的"安全"方法
許多看似能提供安全保障的方法,其實只要具備基礎知識或使用公開可得的工具,任何人都能輕易破解。
基於 JavaScript 的保護機制:此方法毫無用處,因為您必須仰賴使用者在瀏覽應用程式中啟用 JavaScript。使用者可以在瀏覽器中修改 JavaScript,或阻擋、停止程式碼的執行。 切勿依賴 JavaScript 來執行安全性管控,因為其運作完全受使用者控制。
密碼隱蔽性:使用弱密碼、可預測的模式,或僅依賴隱蔽性而非強度,並不能提供真正的保護。 常見錯誤包括:
- 使用文件標題或日期作為密碼
- 序號或重複字元
- 預設密碼如"password"或"12345"
- 透過不安全的管道分享密碼
- 將密碼儲存於 PDF 屬性或元資料中
視覺遮蔽:在敏感文字上疊加圖層以遮蔽內容,但未移除底層文字,此舉並無法提供任何安全性。 原始文字保留在 PDF 結構中,可透過基本的 PDF 工具,甚至簡單的複製貼上操作進行擷取。
專有"加密":某些系統聲稱採用專有加密演算法。 這違反了克克霍夫斯原則——安全性應依賴於金鑰的保密性,而非演算法的保密性。 請務必使用如 AES 這類已廣為採用且經同行評審的加密標準。
PDF 中的 JavaScript 漏洞
儘管 Adobe 已致力於限制惡意 JavaScript 的影響,但這仍是一種攻擊向量,讓技術高超的攻擊者得以藉此入侵數據、用戶及其裝置。
JavaScript 威脅情勢:
CVE-2024-4367 允許攻擊者在開啟惡意 PDF 檔案時執行任意 JavaScript 程式碼。 此漏洞影響了 PDF.js(被數百萬個網站及 Firefox 所採用),展示了 PDF JavaScript 如何被利用來進行遠端程式碼執行。
PDF 文件中常見的 JavaScript 攻擊途徑:
程式碼執行:若對惡意巨集及內嵌腳本的管控不嚴,將導致內嵌程式碼在文件開啟時執行,進而安裝惡意軟體或授予未經授權的存取權限。 PDF 中的 JavaScript 可在某些情境下存取本地檔案系統、建立網路連線,並執行任意程式碼。
資料外洩:敏感資料(例如表單資料、登入憑證及本機檔案)可能在您不知情的情況下洩漏給駭客。 JavaScript 能夠讀取表單欄位、存取文件內容,並將資料傳輸至遠端伺服器。
跨站腳本攻擊 (XSS):在未採取充分安全措施即嵌入 PDF.js 的環境中,此漏洞可能導致跨站腳本攻擊 (XSS)、資料外洩、未經授權的操作,甚至帳戶完全遭劫持。
緩解策略:
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-javascript-mitigation--13.cs
using IronPdf;
using IronPdf.Rendering;
var pdf = PdfDocument.FromFile("input.pdf");
// Prevent JavaScript injection by disabling editing
pdf.SecuritySettings.OwnerPassword = "admin-secure-2024";
pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit;
pdf.SaveAs("output-hardened.pdf");
Imports IronPdf
Imports IronPdf.Rendering
Dim pdf = PdfDocument.FromFile("input.pdf")
' Prevent JavaScript injection by disabling editing
pdf.SecuritySettings.OwnerPassword = "admin-secure-2024"
pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit
pdf.SaveAs("output-hardened.pdf")
額外防護措施:
- 在網頁應用程式中顯示 PDF 時,應實作內容安全政策 (CSP) 標頭
- 在 PDF 中停用 JavaScript。 許多攻擊手法都是利用 JavaScript 的漏洞
- 使用具備沙箱功能的 PDF 閱讀器來隔離 PDF 執行
- 請保持 PDF 軟體更新,以修補已知的漏洞
- 實施網路層級過濾,以阻擋來自 PDF JavaScript 的連線
- 實施並更新基於網路的 URL 過濾機制,以限制 Enterprise 資產連線至潛在惡意或未經批准的網站
"受保護"文件中的元資料外洩
PDF 的元資料在頁面中雖不可見,但仍能透露許多資訊。 作者名稱、軟體版本、日期及內部註記皆隱藏於後台,可於數秒內提取。
常見的元資料安全風險:
個人可識別資訊 (PII):外部瀏覽者可能擷取作者姓名、內部專案代碼或文件主題,從而了解您的團隊運作方式及參與人員。 即使是受強力密碼保護的文件,若未經適當清理,仍可能洩漏敏感的元資料。
軟體版本揭露:元資料通常包含軟體及版本的詳細資訊。 攻擊者可利用此漏洞推斷您的環境,並尋找已知的漏洞。 這些資訊為攻擊者提供了發動針對性攻擊的路線圖。
編輯歷史與版本資訊:某些工作流程會將編輯詳情加入元資料或相關欄位中。 在法律、人力資源或公關的語境中,這些額外的背景資訊可能會引發您未曾預料到的疑問。 舊版內容、註解及變更追蹤資料可能揭露本應保密之資訊。
法規遵循問題:若公開的 PDF 文件中暴露了個人資料、舊版標籤草稿或內部註解,可能違反 GDPR、CCPA 或其他隱私法規。
適當的元資料清理:
:path=/static-assets/pdf/content-code-examples/tutorials/encrypt-pdf-csharp/encrypt-pdf-csharp-pdf-security-metadata-sanitization--14.cs
using IronPdf;
using System;
using System.Linq;
var pdf = PdfDocument.FromFile("input.pdf");
// Remove all standard metadata
pdf.MetaData.Author = "";
pdf.MetaData.Title = "";
pdf.MetaData.Subject = "";
pdf.MetaData.Keywords = "";
pdf.MetaData.Creator = "";
pdf.MetaData.Producer = "";
// Apply neutral metadata
pdf.MetaData.Title = "Document";
pdf.MetaData.Subject = "General Information";
pdf.MetaData.Producer = "PDF Generator";
pdf.SaveAs("output-sanitized.pdf");
Imports IronPdf
Imports System
Imports System.Linq
Dim pdf = PdfDocument.FromFile("input.pdf")
' Remove all standard metadata
pdf.MetaData.Author = ""
pdf.MetaData.Title = ""
pdf.MetaData.Subject = ""
pdf.MetaData.Keywords = ""
pdf.MetaData.Creator = ""
pdf.MetaData.Producer = ""
' Apply neutral metadata
pdf.MetaData.Title = "Document"
pdf.MetaData.Subject = "General Information"
pdf.MetaData.Producer = "PDF Generator"
pdf.SaveAs("output-sanitized.pdf")
範例輸出(移除標準元資料並新增中性元資料)

完整的 PDF 清理檢查清單:
- ✅ 移除作者與創建者資訊。
- ✅ 標題、主題及關鍵字欄位清晰明確。
- ✅ 移除建立與修改日期。
- ✅ 移除應用程式及 PDF 產生器的相關資訊。
- ✅ 清除自訂元資料屬性。
- ✅ 移除內嵌的縮圖。
- ✅ 移除會暴露文件結構的大綱與書籤。
- ✅ 移除檔案附件。
- ✅ 清除表單欄位資料與計算結果。
- ✅ 移除 JavaScript 程式碼。
- ✅ 若進行替換,請移除數位簽章資訊。
- ✅ 若移除安全功能,請清除加密字典。
針對全面的元資料處理,請參考以下做法:
- 為外部文件建立標準化的元資料政策
- 在文件工作流程中實作自動化元資料清理
- 在您的發佈與法律審查工作流程中加入元資料檢查
- 對員工進行元數據風險及正確處理方式的培訓
- 針對公開文件,請使用一致且中立的元資料
- 定期審核已發布的文件
如需有關元資料與安全性設定的更多資訊,請參閱我們的安全性與元資料指南。
後續步驟
從基本的密碼保護到軍用級機密文件處理,IronPDF 提供您所需的工具,協助您實施符合需求的強大安全防護。 權限與密碼指南針對存取控制提供了更深入的 API 說明,而數位簽章教學則展示如何結合加密與加密簽章以實現不可否認性。 針對需在分發前移除敏感資料的工作流程,PDF 內容遮蔽教學涵蓋永久性內容移除、元資料剝離及文件淨化等操作。 using IronPDF 實施 PDF 安全性的重點要點:
- 針對敏感文件,請使用強加密機制並設定複雜密碼
- 透過細粒度的權限控制,落實最小權限原則
- 結合多重安全層(加密、密碼、權限、數位簽章)
- 在對外發佈前,應妥善清理文件內容
- 避免提供虛假安全感的常見反模式
- 針對機密及涉及合規性的文件,維持稽核追蹤紀錄
- 隨著威脅不斷演變,定期檢視並更新安全措施
安全性在更廣泛的文件工作流程中才能發揮最佳效果。 將加密與 PDF/A 歸檔結合以確保長期合規性,使用安全與元資料指南在對外分發前對文件進行清理,並透過批次處理技術在大型文件集上套用加密模式。 請記住,安全性並非一次性實施的任務,而是一個持續進行的評估、改進與警惕的過程。
若您對 IronPDF 的安全功能有任何疑問,或希望請求新增功能,請聯繫我們的工程支援團隊——我們致力於協助您為應用程式實現所需的強大 PDF 安全防護。
請在原始碼中使用 using IronPdf 來包含核心命名空間。
常見問題
在 C# 中使用 IronPDF 進行 PDF 加密有哪些好處?
IronPDF 提供強大的 PDF 加密功能,讓開發人員能透過 AES-128 加密保護文件、設定使用者與擁有者密碼,並透過細粒度權限控制來有效保護敏感資訊。
如何使用 C# 和 IronPDF 加密 PDF 檔案?
若要使用 C# 和 IronPDF 加密 PDF,您可以透過該函式庫指定加密設定(例如 AES-128)、設定使用者密碼和擁有者密碼,並定義文件的權限以限制存取與操作。
使用 IronPDF 時,PDF 檔案中可控制哪些類型的權限?
透過 IronPDF,您可以控制各種權限,例如列印、複製、編輯及註解文件,提供細粒度的安全控制,以滿足特定安全需求。
IronPDF 能否處理 PDF 安全性的批次處理?
是的,IronPDF 支援批次處理功能,讓您能在 .NET 應用程式中高效地對多個 PDF 文件套用安全性設定,既能節省時間,又能確保所有文件的安全性一致。
是否可以使用 IronPDF 移除 PDF 檔案的加密?
若您擁有必要的權限或密碼,IronPDF 允許您修改或移除 PDF 檔案的加密設定,為文件安全性管理提供靈活性。
IronPDF 支援哪些加密標準?
IronPDF 支援 AES-128 加密標準,這是一種強大且廣泛使用的加密方法,可保護 PDF 文件免於未經授權的存取。
IronPDF 如何確保在 .NET 應用程式中保護敏感文件?
IronPDF 透過提供全面的加密選項、密碼保護及詳細的權限設定,確保敏感文件的保護,讓開發人員能在 .NET 應用程式中實現安全的文件處理。

