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 minden Sign() 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 visszanyert Permissions-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 — await azt (vagy kezelje a visszaadott Promise-t) a jelentéstömb beolvasása előtt.

Gyakori problémák

ProblémaOkJavítás
Document.OpenFile() / Document.Open() dob InvalidPasswordErrorA 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 sikertelenA 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ánytSign() 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 jelentAz 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ódszerLeírás
Document.OpenFile() / Document.Open()Dokumentum megnyitása, opcionálisan jelszóval vagy nyilvános kulccsal védett
InvalidPasswordErrorKivétel, ha a jelszó hiányzik vagy hibás
Document.Save() / Document.WriteTo()Dokumentum mentése, opcionálisan egy encrypt beállítással
PermissionsVisszaá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
SignatureReportEgy aláírás ellenőrzési eredménye: name, integrity, signature

Lásd még:

 Magyar