NextPDF Symfony güvenliği ve operasyonları
Bir bakışta
“Bir bakışta” başlıklı bölümYanıt yardımcıları, sabit bir güvenlik başlığı kümesi uygular. Eşzamansız mesajın veri aktarım nesnesi (DTO), çıktı yolunu iki kez doğrular. İmzalama isteğe bağlıdır ve Pro katmanında burada belgelenen temel profille sınırlıdır.
HTTP yanıt güvenlik başlıkları
“HTTP yanıt güvenlik başlıkları” başlıklı bölümNextPDF\Symfony\Http\PdfResponse, oluşturduğu her yanıta aynı başlık kümesini uygular: satır içi, indirme ve iki akışlı türev. Kaynak sabiti tam olarak şu başlıkları tanımlar:
| Başlık | Değer |
|---|---|
Cache-Control | private, max-age=0, must-revalidate |
Pragma | public |
X-Content-Type-Options | nosniff |
X-Frame-Options | DENY |
Content-Security-Policy | default-src 'none' |
X-Robots-Tag | noindex, nofollow |
Referrer-Policy | no-referrer |
Bu başlıklar, oluşturulan belgelerde content-type koklamasını, çerçevelemeyi, dizinlemeyi ve yönlendiren sızıntısını azaltır. Arabelleğe alınan türevler ayrıca Content-Type: application/pdf ve Content-Length başlıklarını da ayarlar. Akışlı türevler içerik türünü ayarlar ve tasarım gereği Content-Length başlığını dahil etmez.
Paket bu başlık kümesini sabitler. Kimliği doğrulanmış indirmeler için daha katı bir Cache-Control gibi başlıklar eklemek veya değiştirmek istiyorsanız, döndürülen Response nesnesini denetleyicinizde döndürmeden önce değiştirin.
Content-Disposition ve dosya adı işleme
“Content-Disposition ve dosya adı işleme” başlıklı bölümPdfResponse, Content-Disposition başlığını savunmacı biçimde oluşturur. PdfResponseTest bu davranışı doğrular:
- Dosya adı temizlenir; yol ayırıcılar ve gezinme dizileri çıkarılır, böylece
../../../etc/passwd.pdfgibi bir dosya adı dizinin dışına çıkamaz. - Uzantı yoksa bir
.pdfuzantısı eklenir; mevcut bir uzantı, büyük harfli bir.PDFdâhil, yinelenmez. - Tırnaklı dize biçimi için çift tırnaklar ve ters eğik çizgiler kaçışlanır.
- ASCII dışı dosya adları bir ASCII yedeği ve bir RFC-5987 (Request for Comments 5987)
filename*=UTF-8''türevi alır. - Boş bir dosya adı
document.pdfdeğerine geri döner.
Kullanıcının etkileyebildiği bir dosya adını yalnızca uygulama düzeyindeki yetkilendirme denetiminizden sonra geçirin. Paket, erişim denetimi için değil, başlık güvenliği için temizleme yapar.
Eşzamansız çıktı yolu doğrulaması
“Eşzamansız çıktı yolu doğrulaması” başlıklı bölümNextPDF\Symfony\Message\GeneratePdfMessage, çıktı yolunu kurucusunda doğrular. NextPDF\Symfony\Message\GeneratePdfHandler, yazmadan önce çalışma zamanında bunu yeniden doğrular. Bu doğrulama şunları reddeder:
- boş yol veya boş bayt içeren bir yol;
- örneğin
php://...gibi bir akış sarmalayıcı şeması; - bir
..gezinme bölümü için ayırıcı olarak/veya\kullanan; - uzantısı
.pdfolmayan bir yol (büyük/küçük harfe duyarsız); - sözdizimsel olarak geçerli bir sınıf adı olmayan bir
builderClass.
İşleyicideki ikinci doğrulama önemlidir, çünkü bir mesaj gönderim ile tüketim arasında kuyrukta kalıcı olarak bekleyebilir. İşleyici, kuyruğa alınmış yola güvenmez ve kaydetmeden önce yol korumasını yeniden uygular. Çalışanları, hedef çıktı diziniyle sınırlandırılmış en az ayrıcalıklı bir dosya sistemi hesabı altında çalıştırın.
Oluşturucu çözümleme sınırı
“Oluşturucu çözümleme sınırı” başlıklı bölümGeneratePdfHandler, oluşturucuları sınıf adına göre anahtarlanan bir PHP Standart Önerisi 11 (PSR-11) hizmet bulucusundan çözer ve PdfBuilderInterface olmayan her şeyi reddeder. Bulucu yalnızca kayıtlı oluşturucuları açığa çıkardığı için, kurcalanmış bir taşıma yükündeki saldırgan denetimli builderClass rastgele bir sınıfı örnekleyemez. PSR-11 kapsamında, bir kapsayıcı bir kimliğin mevcut olmadığını bildirdiğinde, onu çözümlemek beklenmeyen bir şeyi sessizce döndürmek yerine başarısız olur (PSR-11 §1.1.2). Bulucuya yalnızca güvenilen oluşturucu sınıflarını kaydedin.
İsteğe bağlı dijital imzalama duruşu
“İsteğe bağlı dijital imzalama duruşu” başlıklı bölümDijital imzalama, çekirdek paketin bir parçası değildir. Yalnızca nextpdf/premium (Pro katmanını kuran) mevcut olduğunda ve derleyici geçişi Pro imzalama sınıflarını algıladığında etkinleşir. Paket Pro katmanıyla birlikte kurulu olduğunda, desteklenen ve belgelenen imzalama yapılandırması temel B-B profilidir.
Yapılandırma düğümü signature.level, NextPDF yapılandırma ailesi genelinde şema uyumluluğu için ek dize değerlerini kabul eder. Bu paketin sunduğu ve desteklediği imzalama yeteneği B-B’dir. NextPDF Premium belgeleri, B-B’nin ötesindeki imzalama profillerini, bunların gereksinimlerini ve operasyonel değerlendirmelerini kapsar. Bunlar burada özellikle açıklanmamıştır.
B-B imzalama yolu için operasyonel notlar:
- İmzalayıcı yalnızca
signature.enableddoğru olduğunda vesignature.certificateayarlandığında kaydedilir; aksi takdirde bölümün etkisi yoktur. - Sertifikayı, özel anahtarı ve parolayı Symfony gizli bilgileri veya ortam değişkenleri aracılığıyla sağlayın. Bunları asla depoya işlemeyin.
- Anahtar malzemesi üzerindeki okuma izinlerini uygulama hesabıyla sınırlayın.
İsteğe bağlı günlük kaydı
“İsteğe bağlı günlük kaydı” başlıklı bölümYazı tipi ve görüntü kayıt defterleri, Psr\Log\LoggerInterface türünden, nullOnInvalid() ile bağlanmış isteğe bağlı bir bağımlılık kabul eder. Mevcut olduğunda, PHP Standart Önerisi 3 (PSR-3) günlükleyici sözleşmesi (PSR-3) kapsamında değiştirilebilir bir iş ortağıdır. Belge oluşturma sırasında eklediğiniz her günlük bağlamından kullanıcıyı tanımlayan verileri temizleyin; paket belge içeriğini günlüğe kaydetmez.
Operasyonel sıkılaştırma denetim listesi
“Operasyonel sıkılaştırma denetim listesi” başlıklı bölüm- Sabit yanıt başlıklarını koruyun; kimliği doğrulanmış indirmeler için denetleyicide daha katı önbelleğe almayı ayrıca uygulayın.
- Bir belgeyi oluşturmadan veya döndürmeden önce isteği yetkilendirin; paket erişim denetimi gerçekleştirmez.
- İmzalama anahtarı malzemesini, en az ayrıcalıklı dosya izinleriyle Symfony gizli bilgilerinde / ortam değişkenlerinde saklayın.
- Messenger çalışanlarını, yazma erişimi çıktı diziniyle sınırlı, en az ayrıcalıklı bir hesap altında çalıştırın.
- Şu uzantıları etkin tutun:
ext-mbstringveext-zlib(aksi takdirde paket hızla başarısız olur). - Motor sürümünün dağıtımlar genelinde deterministik kalması için uygulamada tek bir
nextpdf/coreana sürümünü sabitleyin.
Uygunluk
“Uygunluk” başlıklı bölümHer satır, bu sayfada yapılan ve kapılı standart geliştirme kuruluşu (SDO) külliyatından gelen tam 64 onaltılık bir reference_id değerine sabitlenmiş normatif bir iddiadır. Köken bilgisi (külliyat bildirimi, alma taşıması) _sidecars/rag-citations.yaml içindedir.
| Belirtim | Madde | reference_id | İddia |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p5 | has() false olduğunda get() NotFoundException fırlatır | |
| PSR-3 | psr_3_logger#x3.p17 | İsteğe bağlı günlükleyici iş ortağı |
Ticari bağlam
“Ticari bağlam” başlıklı bölümDijital imzalama yalnızca nextpdf/premium (Pro) kurulu olduğunda kullanılabilir; bu paketin sunduğu profil temel B-B’dir. Bu isteğe bağlı Pro yeteneği, burada belgelenen Core paketinde herhangi bir kod değişikliği gerektirmez. Bkz. </get-license/?intent=symfony-pro>.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölüm- /integrations/symfony/production-usage/ — çalışan güvenliği ve akış.
- /integrations/symfony/configuration/ — signature, tsa ve service tabloları.
- /integrations/symfony/troubleshooting/ — imzalama ve Messenger sorunlarını tanılama.
- /integrations/symfony/integration/ — uçtan uca bağlantı referansı.