Security
Security
Ez az oldal a jelszavakat, titkosítást és digitális aláírásokat tárgyalja. Document.OpenFile() / Document.Open() jelszót fogadnak egy védett dokumentum megnyitásához, Document.Save() egy encrypt opciót fogad el a védelemhez, és a Document.Sign() / Document.Certify() / Document.VerifySignatures() digitális aláírásokat adnak hozzá és ellenőrzik azokat.
Jelszóval védett dokumentumok megnyitása és visszafejtése
Addja át a { password: '...' } a Document.OpenFile() vagy a Document.Open() számára, hogy megnyisson egy felhasználói jelszóval védett dokumentumot. Ha a jelszó hiányzik vagy hibás, a hívás InvalidPasswordError kivételt dob.
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;
}Titkosítás mentéskor
Document.Save() (és Document.WriteTo()) egy encrypt opciót fogadnak el. A jelszavalapú titkosítás a gyakori eset; a könyvtár emellett támogatja a nyilvános kulcsú titkosítást egy vagy több címzett tanúsítványára, amelyet újra a címzett privát kulcsával nyithatunk meg.
// 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)
Aláírás és tanúsítás
Document.Certify() egy hitelesítő (szerzői) aláírást ad hozzá, amely egy DocMDP átalakítást hordoz, és meghatározza, mely későbbi módosítások engedélyezettek; Document.Sign() egy további, szokásos jóváhagyási aláírást ad hozzá, amely fokozatosan hozzáfűzhető. Mindkettő egy { certificate, privateKey } aláírót és egy opciós objektumot vesz fel (reason, location, name, fieldName, és — Certify() esetén — 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');Aláírások ellenőrzése
Document.VerifySignatures() minden aláírást ellenőriz a dokumentumban: újraszámolja az egyes /ByteRange kivonatot, ellenőrzi a leválasztott CMS-t, és jelentést készít arról, mi változott az egyes aláírások után. Visszaad egy SignatureReport[]-t, egy bejegyzés aláírásonként.
const reports = await Document.OpenFile('signed.pdf').VerifySignatures();
for (const r of reports) {
console.log(r.name, 'integrity:', r.integrity, 'signature:', r.signature);
}Tippek és bevált gyakorlatok
- Fogja el a
InvalidPasswordError-t kifejezetten egy általánosabb catch-all előtt, amikor nem megbízható bemenetet nyit meg, így különböző módon reagálhat egy rossz jelszóra, mint egy sérült fájlra. - Hívja meg a
Certify()-t mindenSign()hívás előtt — egy hitelesítő aláírás meghatározza a DocMDP jogosultságokat, amelyekre a későbbi jóváhagyási aláírások rétegződnek. - A
Document.Open()visszaadja a visszanyertPermissions-t nyilvános kulcsú dekódolás után, de a könyvtár nem kényszeríti ki őket — tekintse őket tájékoztató jellegűnek. - A
VerifySignatures()async—awaitazt (vagy kezelje a visszaadottPromise-t) a jelentéstömb beolvasása előtt.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
Document.OpenFile() / Document.Open() dob InvalidPasswordError | A dokumentum jelszóval védett, és nem lett megadva jelszó, vagy a megadott jelszó helytelen. | Adja át { password: '...' } a Document.OpenFile() / Document.Open() |
| A nyilvános kulcsú visszafejtés sikertelen | A helytelen privát kulcs vagy tanúsítvány lett átadva, vagy egyik sem egyezik a titkosításkor használt recipients bejegyzéssel. | Ellenőrizze, hogy a recipient opció privateKey / certificate (vagy PKCS#12 csomag) egyezik az eredeti címzettek egyikével |
| Egy jóváhagyási aláírás érvényteleníti a tanúsítványt | Sign() a tanúsító DocMDP transzformáció által nem engedélyezett jogosultságokkal lett meghívva | Állítson be egy permissions értéket a Certify() (például 'form-fill') számára, amely elég tág a későbbi aláírók által végrehajtott változtatásokhoz |
VerifySignatures() hibás integritás-ellenőrzést jelent | Az aláírt bájtok módosultak az aláírás után, egy olyan inkrementális frissítésen kívül, amelyet az aláírás lefed | Újra aláírja a dokumentumot minden további szerkesztés után |
FAQ
Mi a különbség a Sign és a Certify között?
Certify() hozzáadja az első, tanúsítási aláírást és (egy DocMDP transzformáción keresztül) deklarálja, milyen későbbi módosítások engedélyezettek. Sign() hozzáad egy szokásos jóváhagyási aláírást, amely fokozatosan a korábbit követően kerül hozzáadásra.
Hogyan nyithatok meg egy jelszóval védett PDF-et?
Adja át { password: '...' } a Document.OpenFile() vagy a Document.Open() számára, és kezelje a InvalidPasswordError kivételt, ha a jelszó esetleg hibás.
Ez a könyvtár érvényesíti a PDF engedélyezési zászlókat?
Nem. Document.Open() helyreállítja a Permissions zászlókat egy titkosított dokumentumból, hogy megvizsgálhassa őket, de magától nem korlátozza, hogy a kódja mit tehet a megnyitott dokumentummal.
Hogyan ellenőrizhetem, hogy egy aláírt PDF aláírásai még érvényesek-e?
Hívja meg a(z) Document.VerifySignatures() (egy async metódus), és vizsgálja meg minden visszaadott SignatureReport integrity és signature mezőjét.
API Reference összefoglaló
| Osztály/Módszer | Leírás |
|---|---|
Document.OpenFile() / Document.Open() | Dokumentum megnyitása, opcionálisan jelszóval vagy nyilvános kulccsal védett |
InvalidPasswordError | Kivétel, ha a jelszó hiányzik vagy hibás |
Document.Save() / Document.WriteTo() | Dokumentum mentése, opcionálisan egy encrypt beállítással |
Permissions | Visszaállított jogosultsági jelzők egy titkosított dokumentumból |
Document.Certify() | Adj hozzá egy tanúsítási (szerzői) aláírást egy DocMDP átalakítással |
Document.Sign() | Adj hozzá egy jóváhagyási aláírást |
Document.VerifySignatures() | Ellenőrizd a dokumentumban lévő összes aláírást |
SignatureReport | Egy aláírás ellenőrzési eredménye: name, integrity, signature |