Motorun tehdit modeli
Bir bakışta
“Bir bakışta” başlıklı bölümBu sayfa, NextPDF çekirdek motorunun tehdit modelini tanımlar. Motorun, saldırganın etkileyebildiği girdileri işlerken kapsam içinde değerlendirdiği saldırı sınıflarını listeler: Köprü Metni İşaretleme Dili (HTML), Basamaklı Stil Sayfaları (CSS), Ölçeklenebilir Vektör Grafikleri (SVG), yazı tipleri, görüntüler ve mevcut Taşınabilir Belge Biçimi (PDF) dosyaları. Her harici kaynak yeteneği için varsayılan duruşu belirtir ve her sınıfı azaltan kod içi korumayı gösterir.
Sınır. Bir tehdit modeli, göz önünde bulundurulan tehditleri ve bunlara uygulanan azaltma önlemlerini kaydeder. Güvenlik açıklarının bulunmadığını ileri sürmez. Burada listelenmeyen bir sınıfın yokluğu kanıtlanmış değildir; modelin mevcut kapsamı dışında kalıyor olabilir. Uygulanmamış özellikler yayımlanmadan önce resmi bir tehdit incelemesinden geçirilir. Bu sayfayı bir güvenlik kanıtı olarak değil, kasıtlı tasarımın kaydı olarak değerlendirin.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Burada açıklanan korumalar çekirdek paketin bir parçasıdır. Bunları etkinleştirmek için ek bir bağımlılığa ihtiyacınız yoktur. Varsayılan olarak açıktırlar.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümModel, Açık Dünya Çapında Uygulama Güvenliği Projesi (OWASP) tehdit modelleme sürecini izler (owasp_threat_modeling#x1.x11.p6): sistem, güvenilmeyen girdinin bir güven sınırını aştığı noktalara ayrıştırılır, her sınırdaki tehditler sayılır ve azaltma önlemi kaydedilir.
Motorun birincil güven sınırı belge alımıdır: başka bir yerde hazırlanmış içeriğin bulunduğu herhangi bir yer — uzak bir stil sayfası, bir @font-face kaynağı, bir <image href>, gömülü bir Genişletilebilir İşaretleme Dili (XML) faturası ya da incelenecek bir PDF — motorun veri getirmesine, ayrıştırmasına veya açmasına yol açabilir. Belirleyici ilke varsayılan-reddet duruşudur: her harici kaynak yeteneği, siz bir ilke nesnesi aracılığıyla açıkça etkinleştirene kadar kapalıdır. Bu, Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) SP 800-53 Rev. 5 CM-7 (nist_sp_800_53r5#x4.x182.p14) belgesindeki en az işlevsellik temel çizgisini bir işleme motoruna uygular: güvenli varsayılan en katı konumdur. Bir yeteneği açmak sizin açık kararınızdır.
API yüzeyi
“API yüzeyi” başlıklı bölümTehdit modeli bir uygulama programlama arabirimi (API) değildir. Bu modeli ifade eden ilke nesneleri, modül sayfalarında belgelenmiştir. Güvenlikle ilgili giriş noktaları, harici kaynak ilkesi sözleşmesi (ExternalResourcePolicyInterface, tümünü-reddet varsayılanı olarak DefaultExternalResourcePolicy ile) ile Tekdüzen Kaynak Konumlandırıcı (URL) ve XML korumalarıdır (UrlValidator, XmlGuard). Bu sayfa bu bileşenlerin davranışına atıfta bulunur; imzalarını yeniden belgelemez.
Kod örneği — hızlı başlangıç
“Kod örneği — hızlı başlangıç” başlıklı bölümGüvenli duruş varsayılandır. Bunu elde etmek için kod yazmanız gerekmez:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Html\DefaultExternalResourcePolicy;
// Out of the box: @font-face blocked, @import blocked, background-image// blocked, SVG external refs blocked. A document that tries to fetch a// remote resource gets a system-font fallback or an ignored rule — not an// outbound request.$policy = new DefaultExternalResourcePolicy();Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümBir yeteneği açmak kasıtlı ve dar kapsamlı bir eylemdir. Üretimde, Güvenli Köprü Metni Aktarım Protokolü (HTTPS) üzerinden bir içerik dağıtım ağında (CDN) barındırılan bir web yazı tipine izin vermeniz gerekiyorsa, bunu açıkça kabul edin ve kapsamını sınırlayın:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Html\DefaultExternalResourcePolicy;
// Explicit, scoped opt-in. The HTTPS scheme is required; size and glyph// caps still apply; the URL still passes the SSRF guard before any fetch.$policy = (new DefaultExternalResourcePolicy()) ->withFontFaceAllowed(['https']);Uç durumlar ve tuzaklar
“Uç durumlar ve tuzaklar” başlıklı bölüm- Uygulanmamış olmak, kazara güvenli olmakla aynı şey değildir. CSS
background-image url()gibi yetenekler uygulanmamıştır; bu nedenle mevcut bir saldırı yüzeyi yoktur. Yine de gelecekte uygulanmadan önce resmi bir tehdit kapısından geçmeleri gerektiği belgelenmiştir. Kodun yokluğu bugün için azaltma önlemidir, kalıcı bir garanti değildir. - Alan Adı Sistemi (DNS) yeniden bağlama, hareketli bir hedeftir.
UrlValidator, ana bilgisayar adını çözer ve çözümlenen İnternet Protokolü (IP) adresini döndürür; böylece çağıran taraf bağlantıyı sabitleyebilir (CURLOPT_RESOLVE) ve doğrula-sonra-getir akışındaki kontrol-zamanından kullanım-zamanına (TOCTOU) penceresi kapatılır. Bu mutlak değil, en iyi çaba düzeyinde bir savunmadır. İzin verici bir çıkış proxy’sinin arkasındaki bir operatör, kitaplığın göremediği dahili ana bilgisayarlara yine de ulaşabilir. - İzin bitleri, erişim denetimi değildir. “Kopyalamayı engelleyen” bir belge, zorlamaya değil, okuyucunun iş birliğine dayanır. Bu, güvenlik modelinde ele alınmıştır. Yaygın bir tehdit modeli yanılgısı olduğu için burada özellikle belirtilir.
Performans
“Performans” başlıklı bölümKorumalar hızlı başarısız olacak şekilde davranır ve iş miktarını sınırlar: XML koruması, ayrıştırmadan önce bir belge türü bildirimini (DOCTYPE) reddeder ve girdi boyutunu sınırlar; görüntü yolu, açma işleminden önce bir megapiksel ve bayt üst sınırı uygular; URL koruması, herhangi bir yuva açılmadan önce şemaya ve ana bilgisayara göre reddeder. Güvenli varsayılanın maliyeti, yavaş bir istek değil, reddedilen bir istektir.
Güvenlik notları
“Güvenlik notları” başlıklı bölümGeçerli olduğu yerlerde Ortak Zayıflık Sıralaması (CWE) ve OWASP referanslarıyla birlikte, göz önünde bulundurulan saldırı sınıfları ve bunların kod içi azaltma önlemleri:
| Tehdit sınıfı (CWE / OWASP) | PDF motorundaki vektör | Kod içi koruma |
|---|---|---|
Sunucu taraflı istek sahteciliği (SSRF) (OWASP Top 10 2025; owasp_top10_2025#x3.x1.p26) | @font-face/@import/url() ögesinin 169.254.169.254 adresine veya bir dahili ana bilgisayara işaret etmesi; zaman damgası yetkilisi (TSA), Çevrimiçi Sertifika Durumu Protokolü (OCSP) ve sertifika iptal listesi (CRL) getiricileri | UrlValidator::validateExternalUrl(), özel, ayrılmış, geri döngü ve bağlantı-yerel aralıklarını ve bulut meta veri uç noktalarını engeller; tehlikeli şemaları reddeder; DNS’yi çözer; ve bağlantı sabitleme için IP’yi döndürür |
XML harici varlık (XXE) (cwe_top25_2025#x28.x2.p42) | Gömülü bir XML faturasında veya Genişletilebilir Meta Veri Platformu (XMP) paketinde harici varlıklar ya da DOCTYPE | XmlGuard::loadXml(), LIBXML_NONET uygular, herhangi bir DOCTYPE bildirimini doğrudan reddeder, XML 1.0 tarafından yasaklanan denetim karakterlerini reddeder ve bir girdi boyutu üst sınırı uygular |
| Sıkıştırma açma bombası | 100 MP’lik bir yükü gizleyen 1×1 görüntü; aşırı büyük Web Open Font Format 2 (WOFF2) | Görüntü yolu, açma işleminden önce bir megapiksel üst sınırı ve bir bayt üst sınırı uygular; yazı tipi yolu, dosya boyutunu ve glif sayısını sınırlar |
| Dizin gezinme | file:///etc/passwd, bir yazı tipi veya SVG aracılığıyla yüklenen src | Harici kaynaklar için varsayılan duruş tümünü-reddet şeklindedir; yerel dosya yolları, açıkça etkinleştirildiğinde bir dizin izin listesine karşı realpath() aracılığıyla çözümlenir |
| İçerik enjeksiyonu | Bir PDF operatöründen kaçan, özel olarak hazırlanmış dize; data:/javascript: href | Üretim sırasında PDF dizesinin kaçışlanması; ek açıklamalarda şema izin listesi ve href temizliği |
Varsayılanlar, harici kaynaklar için tümünü-reddet duruşu oluşturur: yazı tipi, @import, background-image ve SVG harici referansları, kodla birlikte sürdürülen güvenlik özelliği kapsam matrisinde açıklandığı üzere, siz şema bazında kabul edene kadar kapalı kalır.
Bu sayfa, göz önünde bulundurulan tehditleri belgeler. Bir sızma testi raporu değildir ve listelenen azaltma önlemlerinin eksiksiz olduğunu ya da başka hiçbir zayıflık sınıfının geçerli olmadığını iddia etmez.
Uygunluk
“Uygunluk” başlıklı bölümBu bir uygunluk profili değildir. Tehdit modeli, OWASP tehdit modelleme süreci ve CWE Top 25 zayıflık sınıflandırmasından (cwe_top25_2025#x28.x2.p42) yararlanır; herhangi bir güvenlik sertifikasyon şemasına uygunluk iddia etmez. Bağımsız değerlendirme bu belgenin değil, bir denetimin konusudur.