Security
Security
Deze pagina behandelt wachtwoorden, encryptie en digitale handtekeningen. Document.OpenFile() / Document.Open() accepteren een wachtwoord om een beschermd document te openen, Document.Save() accepteert een encrypt optie om er één te beschermen, en Document.Sign() / Document.Certify() / Document.VerifySignatures() voegen digitale handtekeningen toe en controleren ze.
Openen en ontcijferen van wachtwoordbeveiligde documenten
Geef { password: '...' } door aan Document.OpenFile() of Document.Open() om een document te openen dat beveiligd is met een gebruikerswachtwoord. Als het wachtwoord ontbreekt of onjuist is, gooit de aanroep InvalidPasswordError.
import { Document, InvalidPasswordError } from '@asposefoss/pdf';
try {
const doc = Document.OpenFile('secret.pdf', { password: 'hunter2' });
doc.WriteTo('decrypted.pdf'); // output is plaintext
} catch (e) {
if (e instanceof InvalidPasswordError) console.error('wrong password');
else throw e;
}Versleutelen bij opslaan
Document.Save() (en Document.WriteTo()) accepteren een encrypt optie. Wachtwoordgebaseerde encryptie is het gangbare geval; de bibliotheek ondersteunt ook openbare-sleutel encryptie naar één of meer ontvangercertificaten, die opnieuw worden geopend met de privésleutel van de ontvanger.
// Encrypt to one or more recipient certificates (PEM string or DER bytes):
const bytes = doc.Save({
encrypt: {
recipients: [{ certificate: recipientCertPem }],
algorithm: 'aes256', // 'aes256' (default) | 'aes128' | 'rc4'
permissions: { copying: false }, // shared across all recipients
},
});
// Open with the recipient's private key + certificate, or a PKCS#12 bundle:
const opened = Document.Open(bytes, {
recipient: { privateKey, certificate: recipientCertPem },
});
console.log(opened.Permissions); // recovered permission flags (not enforced)
Ondertekenen en certificeren
Document.Certify() voegt een certificeringshandtekening (author) toe die een DocMDP transformatie draagt die aangeeft welke latere wijzigingen zijn toegestaan; Document.Sign() voegt een verdere, gewone goedkeuringshandtekening toe die incrementeel bovenop kan worden aangebracht. Beide nemen een { certificate, privateKey } ondertekenaar en een opties-object (reason, location, name, fieldName, en — voor Certify() — permissions).
const certifying = Document.OpenFile('report.pdf');
await certifying.Certify(
{ certificate: author.certificate, privateKey: author.privateKey },
{ permissions: 'form-fill', reason: 'Certifying the report', fieldName: 'Certification' },
);
const certifiedBytes = certifying.Save();
const approving = Document.Open(certifiedBytes);
await approving.Sign(
{ certificate: approver.certificate, privateKey: approver.privateKey },
{ reason: 'Approved for publication', fieldName: 'Approval' },
);
approving.WriteTo('signed.pdf');Handtekeningen verifiëren
Document.VerifySignatures() controleert elke handtekening in het document: het herberekent elke /ByteRange digest, verifieert de losgekoppelde CMS, en rapporteert wat er veranderde na elke handtekening. Het retourneert een SignatureReport[], één item per handtekening.
const reports = await Document.OpenFile('signed.pdf').VerifySignatures();
for (const r of reports) {
console.log(r.name, 'integrity:', r.integrity, 'signature:', r.signature);
}Tips en beste praktijken
- Vang
InvalidPasswordErrorspecifiek op vóór een bredere algemene vangst bij het openen van onbetrouwbare invoer, zodat je anders kunt reageren op een slecht wachtwoord dan op een beschadigd bestand. - Roep
Certify()aan vóór alleSign()-aanroepen — een certificeringshandtekening stelt de DocMDP-permissies vast waar latere goedkeuringshandtekeningen bovenop worden gelegd. Document.Open()retourneert hersteldePermissionsna publieke-sleutelontsleuteling, maar de bibliotheek handhaaft ze zelf niet — behandel ze als informatief.VerifySignatures()isasync—awaithet (of verwerk de geretourneerdePromise) voordat je de rapportarray leest.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
Document.OpenFile() / Document.Open() gooit InvalidPasswordError | Het document is beveiligd met een wachtwoord en er is geen wachtwoord, of het verkeerde, opgegeven | Geef { password: '...' } aan Document.OpenFile() / Document.Open() |
| Decryptie met openbare sleutel mislukt | De verkeerde privésleutel of certificaat werd doorgegeven, of geen van beide komt overeen met een recipients-vermelding die bij het versleutelen werd gebruikt | Bevestig dat de recipient optie’s privateKey / certificate (of PKCS#12-bundel) overeenkomt met één van de oorspronkelijke ontvangers |
| Een goedkeuringshandtekening maakt de certificering ongeldig | Sign() werd aangeroepen met rechten die de certificerende DocMDP transformatie niet toestaat | Stel een permissions waarde in op Certify() (bijv. 'form-fill') breed genoeg voor de wijzigingen die latere ondertekenaars zullen aanbrengen |
VerifySignatures() meldt een gefaalde integriteitscontrole | De ondertekende bytes zijn na ondertekening gewijzigd, buiten een incrementele update die de handtekening dekt | Onderteken het document opnieuw na eventuele verdere bewerkingen |
FAQ
Wat is het verschil tussen Sign en Certify?
Certify() voegt de eerste certificeringshandtekening toe en verklaart (via een DocMDP transformatie) welke latere wijzigingen zijn toegestaan. Sign() voegt een gewone goedkeuringshandtekening toe, incrementeel toegevoegd bovenop wat er daarvoor was.
Hoe open ik een wachtwoordbeveiligde PDF?
Geef { password: '...' } door aan Document.OpenFile() of Document.Open(), en vang InvalidPasswordError op als het wachtwoord mogelijk onjuist is.
Handhaaft deze bibliotheek PDF-permissievlaggen?
Nee. Document.Open() herstelt de Permissions vlaggen uit een versleuteld document zodat je ze kunt inspecteren, maar beperkt zelf niet wat je code kan doen met het geopende document.
Hoe controleer ik of de handtekeningen van een ondertekende PDF nog geldig zijn?
Roep Document.VerifySignatures() aan (een async methode) en inspecteer de integrity en signature velden van elk geretourneerde SignatureReport.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
Document.OpenFile() / Document.Open() | Open een document, optioneel wachtwoord- of openbare-sleutelbeveiligd |
InvalidPasswordError | Wordt gegooid wanneer een wachtwoord ontbreekt of onjuist is |
Document.Save() / Document.WriteTo() | Sla een document op, optioneel met een encrypt-optie |
Permissions | Herstelde permissievlaggen van een versleuteld document |
Document.Certify() | Voeg een certificering (auteur)handtekening toe met een DocMDP transformatie |
Document.Sign() | Voeg een goedkeuringshandtekening toe |
Document.VerifySignatures() | Verifieer elke handtekening in het document |
SignatureReport | Verificatieresultaat van één handtekening: name, integrity, signature |