Sorun giderme: şifreleme ve izin bayrakları
Kapsam ve sınır
“Kapsam ve sınır” başlıklı bölümMotorun NextPDF\Exception\EncryptionException ve NextPDF\Security\Exception\DecryptionFailedException üzerinden fırlattığı şifre çözme hatalarını gidermek ve Taşınabilir Belge Biçimi (PDF) izin bayraklarının sınırlarını anlamak için bu girdileri kullanın.
En yaygın yanlış anlamayı önlemek için önce sınırı netleştirin: şifreleme sözlüğündeki PDF izin bayrakları yazarın niyetini kaydeder. Bunlar, bu kitaplığın zorunlu kıldığı bir erişim denetimi mekanizması değildir. Bayrakları yok sayan bir okuyucu içeriği yine de yazdırabilir, kopyalayabilir veya değiştirebilir. Bayrakları zorunluluk olarak değil, uyumlu davranan bir okuyucuya yönelik istek olarak değerlendirin.
Girdi: şifreleme işlemi başarısız oluyor
“Girdi: şifreleme işlemi başarısız oluyor” başlıklı bölüm- Belirti.
EncryptionException; iletisiEncryption operation "<op>" failed using algorithm "<algorithm>"biçimindedir. - Olası neden. Kriptografik işlem çalıştırılamadı; bunun nedeni genellikle OpenSSL uzantısının eksik veya yanlış yapılandırılmış olması, anahtar materyalinin geçersiz olması ya da başlatma vektörü (IV) boyutunun şifre sınırında geçersiz olmasıdır.
- Kanıt / tanılama.
getContext(),algorithmveoperationdeğerlerini döndürür.operationdeğeriencrypt,decryptveyakey_derivationdeğerlerinden biridir; böylece hangi aşamanın başarısız olduğunu belirleyebilirsiniz. - Çözüm.
- PHP’nin OpenSSL uzantısının yüklü ve etkin olduğunu doğrulayın.
- Başarısız olan aşamayı bulmak için
operationalanını kullanın. - İşlem
key_derivationise, parola veya anahtar girdilerini doğrulayın. - Çağrıyı yeniden çalıştırın.
- İlgili. Özel durum başvurusu.
Girdi: şifre çözme yapısal bir nedenle başarısız oluyor
“Girdi: şifre çözme yapısal bir nedenle başarısız oluyor” başlıklı bölüm- Belirti.
DecryptionFailedException; iletisiDecryption failed for "<algorithm>": <reason>biçimindedir. - Olası neden. Şifreli metin, kurcalamadan kaynaklanmayan bir nedenle işlenemedi; örneğin kesilmiş şifreli metin, eksik bir IV ya da uygulama programlama arabirimi (API) sınırında sağlanan yanlış anahtar. Değerlendirilecek yeterli materyal bulunmadığı için bütünlük denetimi çalışmadı.
- Kanıt / tanılama.
getContext(),algorithmvereasondeğerlerini döndürür. Kaynak belgelerDecryptionFailedExceptionileTamperedDataExceptionarasında ayrım yapar: bu özel durum kurcalamayı değil, yapılandırma veya aktarım hatasını ifade eder. Bunu tek başına bir güvenlik olayı olarak değerlendirmeyin. - Çözüm.
- Yapısal kusuru belirlemek için
reasondeğerini okuyun; örneğinciphertext shorter than IV+tag. - Şifreli metnin kesilmeden aktarıldığını doğrulayın.
- Sınırda sağlanan anahtarın, belgeyi şifrelemek için kullanılan anahtar olduğunu doğrulayın.
- Çağrıyı yeniden çalıştırın.
- Yapısal kusuru belirlemek için
- İlgili. İmza ve zaman damgası hataları.
Girdi: bir “kurcalanmış veri” özel durumu fırlatılıyor
“Girdi: bir “kurcalanmış veri” özel durumu fırlatılıyor” başlıklı bölüm- Belirti.
NextPDF\Security\Exception\TamperedDataExceptionözel durumunuDecryptionFailedExceptionyerine alıyorsunuz. - Olası neden. Bütünlük denetimi çalıştı ve başarısız oldu. Bu, yapısal bir şifre çözme hatasından farklıdır: bütünlüğü değerlendirmek için yeterli materyal mevcuttu ve bütünlük sağlanmadı.
- Kanıt / tanılama. Kaynak, iki sınıf arasında ayrım yapar:
DecryptionFailedExceptionyapısaldır ve bir güvenlik olayı değildir;TamperedDataExceptionise kimliği doğrulanmış içeriğin doğrulanmadığını gösterir. - Çözüm.
- Girdiyi güvenilmez olarak değerlendirin; şifresi çözülmüş içeriği kullanmayın.
- Belgeyi güvenilir bir kaynaktan yeniden alın.
- Hata, sağlam olduğu bilinen bir kaynakta da sürüyorsa, bir olay raporu için
getContext()çıktısını yakalayın.
- İlgili. İmza ve zaman damgası hataları.
Girdi: izin bayrakları sonraki bir işlemi durdurmuyor
“Girdi: izin bayrakları sonraki bir işlemi durdurmuyor” başlıklı bölüm- Belirti. İzin bayrakları ayarlanmış bir belge oluşturuldu (örneğin kopyalama veya yazdırma izni verilmedi), ancak bir okuyucu içeriği yine de kopyalıyor ya da yazdırıyor.
- Olası neden. Bu beklenen bir sınırlamadır; kusur değildir. Core şifreleme sözlüğü oluşturucusuna verilen izin tam sayısı, bu kitaplık tarafından zorunlu kural olarak uygulanmaz. Bayraklar tavsiye niteliğinde üst verilerdir; bunlara uymayan bir okuyucu NextPDF tarafından engellenmez.
- Kanıt / tanılama.
src/Security/Encryption/EncryptionDictionaryBuilder.phpdosyasıbuildDict(int $permissions, string $fileId)bildirir ve parametreyiignored; retained for forward compatibilityolarak belgeler. Yöntemunset($permissions, $fileId)ile başlar.src/Inspect/PdfPermissions.phptarafından sunulan izin bayrakları, salt okunur inceleme alanlarıdır; bir zorunluluk katmanı değildir. - Çözüm.
- Yazdırmayı, kopyalamayı veya değiştirmeyi durdurmak için izin bayraklarına güvenmeyin. Üretici bir kitaplık bunları zorunlu kılamaz.
- Erişimi kısıtlamanız gereken durumlarda, dosyanın kendisinin dağıtımını denetleyin ya da PDF dışında bir erişim denetimi sistemi uygulayın.
- Mevcut bir belgenin bildirdiği bayrakları raporlamak için yalnızca
PdfPermissionsöğesini kullanın; bunu, işlemlerin engellendiğini ileri sürmek için kullanmayın.
- İlgili. İmza ve zaman damgası hataları.
Girdi: PDF/A altında şifreleme reddediliyor
“Girdi: PDF/A altında şifreleme reddediliyor” başlıklı bölüm- Belirti. Bir derleme PDF/A’yı etkinleştirirken şifreleme de istediğinde
NextPDF\Security\Exception\IncompatiblePdfAModeException. - Olası neden. PDF/A profili, fragmanda (trailer)
Encryptanahtarını yasaklar. Motor bu birleşimi her iki çağrı sırasında da reddeder. - Kanıt / tanılama. PDF/A ve PDF/UA girdisine, belirtilen madde,
getContext()alanları ve hata yolu testi için bakın. - Çözüm.
- Belgenin arşivleme uyumluluğuna mı yoksa şifrelemeye mi gereksinim duyduğuna karar verin.
- Gereksinim duymadığınız özelliğe ait çağrıyı kaldırın.
- İşlem hattını yeniden çalıştırın.
- İlgili. PDF/A ve PDF/UA doğrulaması.
Uç durumlar ve dikkat edilmesi gerekenler
“Uç durumlar ve dikkat edilmesi gerekenler” başlıklı bölümDecryptionFailedExceptionveTamperedDataExceptionfarklı anlamlara gelir: yapısal hata ve bütünlük denetimi başarısızlığı. İleti üzerinden değil, sınıf üzerinden dallanın.- Core şifreleme sözlüğü oluşturucusu izin tam sayısını yok sayar; Core paketinde izinlerin zorunlu uygulanmasına dayanan herhangi bir derleme, yanlış bir varsayım üzerine kuruludur.
PdfPermissionsyalnızca tam inceleme derinliğindeki şifrelenmiş belgeler için doldurulur ve bildirilen bayrakları yansıtır. Bir alanın doldurulmuş olması, işlemin engellendiği anlamına gelmez.