Security

Security

Bu sayfa şifreleri, şifrelemeyi ve dijital imzaları kapsar. Document.OpenFile() / Document.Open() korumalı bir belgeyi açmak için bir şifre kabul eder, Document.Save() bir encrypt seçeneğini korumak için kabul eder ve Document.Sign() / Document.Certify() / Document.VerifySignatures() dijital imzaları ekler ve kontrol eder.


Şifre Koruması Olan Belgeleri Açma ve Şifre Çözme

{ password: '...' }’ı Document.OpenFile() ya da Document.Open()’ye göndererek kullanıcı şifresiyle korunan bir belgeyi açın. Şifre eksik ya da hatalıysa, çağrı InvalidPasswordError hatasını fırlatır.

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;
}

Kaydederken Şifreleme

Document.Save() (ve Document.WriteTo()) bir encrypt seçeneğini kabul eder. Şifre temelli şifreleme yaygın durumdur; kütüphane ayrıca bir veya daha fazla alıcı sertifikasına açık anahtar şifrelemesini de destekler ve alıcının özel anahtarıyla tekrar açılır.

// 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)

İmzalama ve Sertifikalandırma

Document.Certify() bir sertifikasyon (yazar) imzası ekler; bu imza bir DocMDP dönüşümü taşır ve daha sonraki değişikliklerin hangi koşullarda izin verildiğini bildirir; Document.Sign() ek bir, sıradan onay imzası ekler ve bu imza üstüne artımlı olarak eklenebilir. İkisi de bir { certificate, privateKey } imzalayan ve bir seçenekler nesnesi (reason, location, name, fieldName, ve — Certify() için — permissions) alır.

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');

İmzaları Doğrulama

Document.VerifySignatures() belgede bulunan her imzayı kontrol eder: her /ByteRange özetini yeniden hesaplar, ayrık CMS’i doğrular ve her imzadan sonra neyin değiştiğini rapor eder. Bir SignatureReport[] döndürür, imza başına bir giriş.

const reports = await Document.OpenFile('signed.pdf').VerifySignatures();
for (const r of reports) {
  console.log(r.name, 'integrity:', r.integrity, 'signature:', r.signature);
}

İpuçları ve En İyi Uygulamalar

  • Güvenilmeyen girdi açılırken daha geniş bir genel yakalama bloğundan önce InvalidPasswordError‘ı özel olarak yakalayın, böylece hatalı bir parolaya karşı bozuk bir dosyaya göre farklı bir şekilde tepki verebilirsiniz.
  • Certify()‘ı herhangi bir Sign() çağrısından önce çağırın — bir sertifikasyon imzası, daha sonraki onay imzalarının üzerine katıldığı DocMDP izinlerini belirler.
  • Document.Open(), açık anahtar şifrelemesinden sonra kurtarılmış Permissions‘ı döndürür, ancak kütüphane bunları kendisi zorlamaz — bunları bilgilendirici olarak değerlendirin.
  • VerifySignatures() async — await onu (veya döndürülen Promise‘ı işle) rapor dizisini okumadan önce.

Yaygın Sorunlar

SorunNedenDüzeltme
Document.OpenFile() / Document.Open() InvalidPasswordError hatasını verirBelge şifre korumalıdır ve şifre sağlanmadı ya da yanlış şifre verildi.{ password: '...' } öğesini Document.OpenFile() / Document.Open() öğesine iletin
Açık anahtar şifre çözmesi başarısız olurYanlış özel anahtar veya sertifika iletildi, ya da hiçbiri şifreleme sırasında kullanılan recipients girdisiyle eşleşmiyor.Orijinal alıcılardan birine eşleştiğini doğrulamak için recipient seçeneğinin privateKey / certificate (veya PKCS#12 paketi) kontrol edin.
Onay imzası sertifikayı geçersiz kılar.Sign(), sertifikalandıran DocMDP dönüşümünün izin vermediği yetkilerle çağrıldı.Certify() üzerinde (ör. 'form-fill') yeterince geniş bir permissions değeri ayarlayın ki sonraki imzalayanların yapacağı değişikliklere uysun.
VerifySignatures(), bozulmuş bir bütünlük kontrolü rapor ediyor.İmzalı baytlar imzalandıktan sonra, imzanın kapsadığı artımlı güncellemenin dışında değiştirilmiş.Herhangi bir ek düzenlemeden sonra belgeyi yeniden imzalayın.

FAQ

İmzalama ve Sertifikalandırma arasındaki fark nedir?

Certify() ilk sertifikasyon imzasını ekler ve (bir DocMDP dönüşümü aracılığıyla) sonraki değişikliklerin neyin izinli olduğunu belirtir. Sign() sıradan bir onay imzası ekler, önceden gelenlerin üzerine artımlı olarak eklenir.

Şifre korumalı bir PDF’yi nasıl açarım?

{ password: '...' }‘ı Document.OpenFile()‘e veya Document.Open()‘ye iletin ve şifre yanlış olabileceği durumunda InvalidPasswordError‘ü yakalayın.

Bu kütüphane PDF izin bayraklarını uyguluyor mu?

Hayır. Document.Open(), şifreli bir belgeden Permissions bayraklarını geri alır, böylece inceleyebilirsiniz, ancak açılmış belgeyle kodunuzun ne yapabileceğini kendisi kısıtlamaz.

İmzalı bir PDF’nin imzalarının hâlâ geçerli olup olmadığını nasıl kontrol ederim?

Document.VerifySignatures()‘ı (bir async yöntemi) çağırın ve döndürülen her SignatureReport‘nin integrity ve signature alanlarını inceleyin.


API Reference Özeti

Sınıf/YöntemAçıklama
Document.OpenFile() / Document.Open()Bir belge açın, isteğe bağlı olarak şifreli veya açık anahtar korumalı
InvalidPasswordErrorŞifre eksik veya hatalı olduğunda atılır
Document.Save() / Document.WriteTo()Bir belgeyi kaydedin, isteğe bağlı olarak bir encrypt seçeneği ile
PermissionsŞifreli bir belgeden geri alınan izin bayrakları
Document.Certify()Bir DocMDP dönüşümüyle bir sertifikasyon (yazar) imzası ekleyin
Document.Sign()Bir onay imzası ekleyin
Document.VerifySignatures()Belgedeki her imzayı doğrulayın
SignatureReportBir imzanın doğrulama sonucu: name, integrity, signature

Ayrıca Bakınız

 Türkçe