using IronPdf;var pdf = PdfDocument.FromFile("input.pdf");// User password required to open/view the PDFpdf.SecuritySettings.UserPassword = "view-access-2024";// Owner password required to modify security settingspdf.SecuritySettings.OwnerPassword = "admin-master-key";// Disable printing for users without owner passwordpdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;// Disable copy/paste of contentpdf.SecuritySettings.AllowUserCopyPasteContent = false;pdf.SaveAs("output-secured.pdf");
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");
ImportsIronPdfDim pdf = PdfDocument.FromFile("input.pdf")' User password required to open/view the PDFpdf.SecuritySettings.UserPassword = "view-access-2024"' Owner password required to modify security settingspdf.SecuritySettings.OwnerPassword = "admin-master-key"' Disable printing for users without owner passwordpdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint' Disable copy/paste of contentpdf.SecuritySettings.AllowUserCopyPasteContent = Falsepdf.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")
using IronPdf;var pdf = PdfDocument.FromFile("input.pdf");// Set user password - anyone opening this PDF must provide this passwordpdf.SecuritySettings.UserPassword = "Secure#Password2024!";pdf.SaveAs("output-protected.pdf");
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");
ImportsIronPdfDim pdf = PdfDocument.FromFile("input.pdf")' Set user password - anyone opening this PDF must provide this passwordpdf.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")
using IronPdf;using IronPdf.Security;var pdf = PdfDocument.FromFile("sample-pdf.pdf");// Owner password enables restrictions without requiring password to openpdf.SecuritySettings.OwnerPassword = "admin-control-2024";// Prevent printing without owner passwordpdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;// Disable copy/paste functionalitypdf.SecuritySettings.AllowUserCopyPasteContent = false;// Prevent any editing without owner passwordpdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;pdf.SaveAs("output-owner-protected.pdf");
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");
ImportsIronPdfImportsIronPdf.SecurityDim pdf = PdfDocument.FromFile("sample-pdf.pdf")' Owner password enables restrictions without requiring password to openpdf.SecuritySettings.OwnerPassword = "admin-control-2024"' Prevent printing without owner passwordpdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint' Disable copy/paste functionalitypdf.SecuritySettings.AllowUserCopyPasteContent = False' Prevent any editing without owner passwordpdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEditpdf.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")
using IronPdf;var pdf = PdfDocument.FromFile("input.pdf");// Owner password required for copy/paste restrictionspdf.SecuritySettings.OwnerPassword = "content-protection-key";// Prevent users from selecting and copying text or imagespdf.SecuritySettings.AllowUserCopyPasteContent = false;pdf.SaveAs("output-no-copy.pdf");
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");
ImportsIronPdfDim pdf = PdfDocument.FromFile("input.pdf")' Owner password required for copy/paste restrictionspdf.SecuritySettings.OwnerPassword = "content-protection-key"' Prevent users from selecting and copying text or imagespdf.SecuritySettings.AllowUserCopyPasteContent = Falsepdf.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 阅读器的强制执行,拥有专业工具的攻击者可能仍然能够提取内容,这就是为什么加密和密码保护是重要的补充措施。
如果OwnerPassword才能使安全措施生效,确保这些限制不能被简单绕过。
限制文档编辑
文档编辑限制可防止用户修改 PDF 的实际内容。 禁用编辑功能可确保文档的完整性,避免未经授权的更改。
using IronPdf;using IronPdf.Security;// Prevent any content modificationsvar 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 operationsvar pdf3 = PdfDocument.FromFile("input.pdf");pdf3.SecuritySettings.OwnerPassword = "draft-admin";pdf3.SecuritySettings.AllowUserEdits = PdfEditSecurity.EditAll;pdf3.SaveAs("output-editable.pdf");
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");
using IronPdf;var pdf = PdfDocument.FromFile("input.pdf");// Owner password required for annotation restrictionspdf.SecuritySettings.OwnerPassword = "legal-admin-2024";// Prevent adding comments, highlights, or other markuppdf.SecuritySettings.AllowUserAnnotations = false;pdf.SaveAs("output-no-annotations.pdf");
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");
ImportsIronPdfDim pdf = PdfDocument.FromFile("input.pdf")' Owner password required for annotation restrictionspdf.SecuritySettings.OwnerPassword = "legal-admin-2024"' Prevent adding comments, highlights, or other markuppdf.SecuritySettings.AllowUserAnnotations = Falsepdf.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")
using IronPdf;// Open password-protected PDFvar password = "user-access-2024";var pdf = PdfDocument.FromFile("protected.pdf", password);// Work with the decrypted documentvar text = pdf.ExtractAllText();// Modify and savepdf.SaveAs("output-processed.pdf");// Note: For production, use secure password storage (environment variables, key vaults)
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)
ImportsIronPdf' Open password-protected PDFDim password AsString = "user-access-2024"Dim pdf AsPdfDocument = PdfDocument.FromFile("protected.pdf", password)' Work with the decrypted documentDim text AsString = pdf.ExtractAllText()' Modify and savepdf.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)
using IronPdf;var pdf = PdfDocument.FromFile("protected.pdf", "owner-password-2024");pdf.SecuritySettings.RemovePasswordsAndEncryption();pdf.SaveAs("output-unprotected.pdf");
using IronPdf;
var pdf = PdfDocument.FromFile("protected.pdf", "owner-password-2024");
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SaveAs("output-unprotected.pdf");
ImportsIronPdfDim 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 时,您可以实施批处理,以高效处理整个加密文档目录。
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 }}
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
}
}
ImportsIronPdfImportsSystemImportsSystem.IODim inputDir AsString = "./input"Dim outputDir AsString = "./output"Directory.CreateDirectory(outputDir)Dim pdfFiles = Directory.GetFiles(inputDir, "*.pdf")Dim password AsString = "batch-process-2024"For Each pdfPath In pdfFilesTry Dim pdf AsPdfDocumentTry pdf = PdfDocument.FromFile(pdfPath, password)Catch pdf = PdfDocument.FromFile(pdfPath)EndTry Dim text = pdf.ExtractAllText() pdf.SecuritySettings.RemovePasswordsAndEncryption() Dim fileName AsString = Path.GetFileName(pdfPath) Dim outputPath AsString = Path.Combine(outputDir, fileName) pdf.SaveAs(outputPath)Catch ex AsException ' Handle errors as neededEndTryNext
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
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");public class PdfAuditLog{ public DateTimeTimestamp { get; set; } public stringUsername { get; set; } public stringOperation { get; set; } public stringDocumentPath { get; set; } public stringIpAddress { get; set; } public boolSuccess { get; set; } public stringDetails { get; set; }}public class SecureDocumentHandler{ private readonly string auditLogPath = "./logs/audit.log";public voidOpenClassifiedDocument(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 voidLogPrintOperation(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 voidLogAuditEntry(PdfAuditLog entry){Directory.CreateDirectory(Path.GetDirectoryName(auditLogPath)); string jsonEntry = JsonSerializer.Serialize(entry);File.AppendAllText(auditLogPath, jsonEntry + Environment.NewLine);}}
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"
);
public 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; }
}
public 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);
}
}
C#
基本审核要素:
访问事件:记录每次文档打开、查看、打印和关闭操作
用户身份验证:记录访问文档的每个人的认证身份
时间戳:使用同步时钟保持精确的时间记录
操作类型: 区分查看、打印、编辑和其他操作
成果:记录业务的成功或失败
来源信息:捕获 IP 地址、机器标识符和位置数据(如果有的话
审计日志保护:审计日志本身具有敏感性,必须加以保护:
将日志与其跟踪的文档分开存储
对审计数据进行加密
实施仅附加日志存储以防止篡改
使用加密签名确保日志完整性
定期备份到安全的异地位置
定义符合法规要求的保留期
将加密与数字签名相结合
数字签名为 PDF 文档提供身份验证和完整性。 通过使用 IronPDF,您可以确保您的文档是由经过验证的来源签署的,并且在签署后没有被修改过。
对于机密文件,将加密与数字签名相结合,既能保证保密性,又能保证真实性:
using IronPdf;using IronPdf.Signing;using System.Security.Cryptography.X509Certificates;var pdf = PdfDocument.FromFile("input.pdf");// Apply encryptionpdf.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");
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");
ImportsIronPdfImportsIronPdf.SigningImportsSystem.Security.Cryptography.X509CertificatesDim pdf = PdfDocument.FromFile("input.pdf")' Apply encryptionpdf.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")
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")
using IronPdf;using IronPdf.Rendering;var pdf = PdfDocument.FromFile("input.pdf");// Prevent JavaScript injection by disabling editingpdf.SecuritySettings.OwnerPassword = "admin-secure-2024";pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit;pdf.SaveAs("output-hardened.pdf");
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");
ImportsIronPdfImportsIronPdf.RenderingDim pdf = PdfDocument.FromFile("input.pdf")' Prevent JavaScript injection by disabling editingpdf.SecuritySettings.OwnerPassword = "admin-secure-2024"pdf.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEditpdf.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 过滤器,以限制企业资产连接到潜在的恶意或未经批准的网站
"安全 "文档中的元数据泄露
PDF 元数据在页面上并不可见,但仍能透露出很多信息。 作者姓名、软件版本、日期和内部注释均位于幕后,可在数秒内调出。
如果您对 IronPDF 的安全功能有任何疑问,或希望获得更多功能,请联系我们的工程支持团队--我们致力于帮助您实现应用程序所需的强大 PDF 安全性。
在源代码中使用using IronPdf以包含核心命名空间。
常见问题解答
在 C# 中使用 IronPDF 进行 PDF 加密有哪些好处?
IronPDF 提供强大的 PDF 加密功能,允许开发人员使用 AES-128 加密保护文档,设置用户和所有者密码,控制细粒度权限,从而有效保护敏感信息。
如何使用 IronPDF 的 C# 对 PDF 进行加密?
要使用 IronPDF 的 C# 对 PDF 进行加密,您可以使用该库指定 AES-128 等加密设置,设置用户和所有者密码,并为文档定义权限以限制访问和操作。
using IronPDF 可以在 PDF 中控制哪些类型的权限?
using IronPDF,您可以控制打印、复制、编辑和注释文档等各种权限,提供细粒度的安全控制,以满足特定的安全要求。
IronPDF 能否处理 PDF 安全性的批处理?
是的,IronPDF 能够进行批处理,允许您在 .NET 应用程序中高效地对多个 PDF 文档应用安全设置,从而节省时间并确保各文档具有一致的安全性。
是否可以使用 IronPDF 去除 PDF 中的加密?
如果您拥有必要的权限或密码,IronPDF 允许您修改或删除 PDF 中的加密,为管理文档安全提供了灵活性。
IronPDF 支持哪些加密标准?
IronPDF 支持 AES-128 加密标准,这是一种强大且广泛使用的方法,可确保 PDF 文档的安全,防止未经授权的访问。
IronPDF 如何确保保护 .NET 应用程序中的敏感文档?
IronPDF for .NET 通过提供全面的加密选项、密码保护和详细的权限设置,确保对敏感文档的保护,使开发人员能够在 .NET 应用程序中实现安全的文档处理。
How do I keep PDF metadata readable while encrypting the content?
Set SecuritySettings.EncryptMetadata to false. It defaults to true, matching the PDF default. This is useful when documents must remain searchable or catalogued by an external system while the body stays encrypted. Note that EncryptMetadata is only honored for AES encryption and has no effect when EncryptionType is Rc4_128.
What should I consider when managing PDF permissions in a .NET application?
When managing PDF permissions, consider the specific actions you want to restrict (e.g., printing, copying, editing) and use IronPDF’s permission controls for each. Always set an owner password to enforce these restrictions.
What steps are necessary to implement effective PDF security in a .NET application?
To implement effective PDF security, ensure you use strong encryption and complex passwords, apply the principle of least privilege with granular permissions, and regularly sanitize documents before distribution to remove sensitive metadata.
Is it possible to perform batch processing on encrypted PDF files using IronPDF?
Yes, IronPDF supports batch processing of encrypted PDF files, allowing you to handle multiple documents efficiently by looping through a directory of files and applying security settings or removing encryption as needed.
How can digital signatures be used alongside encryption in PDF documents?
Digital signatures can be added to encrypted PDFs using IronPDF to ensure document authenticity and integrity. This involves using a valid X.509 certificate to sign the PDF after applying encryption settings, ensuring both confidentiality and non-repudiation.