Güvenli cs en güvensiz olanlardan ayırt etmek için hiçbir ilkeli bir yol olduğundan, genel olarak, tamamen komut dizileri kaçmasını aracılığıyla güvenliğinin sağlanması, büyük ölçüde ekspresivitesini düşürmeden yapmak zordur: Tex sadece bu izin için yeterince temiz bir programlama dili değildir. Ben güvenlik açıkları varlığını ortadan kaldırarak lehine bu yaklaşımı terk söyleyebilirim.
Lateks güvenlik açıkları veger özet benimki ile uyumlu: o bir kabuk kaçış açığını kaçırmış olsa, yani, sorunları, kabuk kaçar ve dosya creation.overwriting vardır. Bazı ek puan, daha sonra bazı önerileri uygulayın:
- Bu örtülü texmf.cnf etkin olabilir beri aktif,
--shell-escape
yürütmesini önlemek için yeterli değildir. Açıkça geçmek --no-shell-escape
texmf.cnf geçersiz kılmak için gerekmektedir;
\write18
ETEX ilkel değil, Knuth Tex Yani (ne yazık ki, çoğu olan) bunu uygulamak latekslerinin önleyebilirsiniz;
\special
komutları oluşturabilirsiniz kabuk komutları çalıştırmak için dvips sormak dvi dosyaları:. Eğer dvips kullanıyorsanız, başka bir risk vardır. Eğer dvips kullanırsanız Yani, kabuk komutları başvurmalarını yasaklamak -R2
komutunu geçmesi gerekir;
- texmf.cnf Tex dosyaları oluşturabilirsiniz nerede belirlemenizi sağlar;
- Onlar yaratabilir hangi fontların müşterileriniz çok özgürlük istiyorsanız yazı devre dışı oluşturulmasını önlemek mümkün olmayabilir. the notes on security for Kpathsea bir göz atın; varsayılan davranış bana makul görünüyor, ama başka kullanıcıların parmakları üzerinde bir kullanıcı Adımlara önlemek için, bir kullanıcı başına yazı ağacı olabilir.
Seçenekler:
- Müşterinizin Lateks çağırmaları Sandbox ve onlara sandbox yaramazlık için özgürlük verir;
- Kpathsea öndeğerlerinde güven ve lateks ve PDF çıktısını oluşturmak için kullanılan diğer yürütülebilir kabuk kaçar korusun;
- Büyük ölçüde müşterilerine yazı tipi dosyaları veya herhangi bir yeni müşteri tarafından belirtilen dosyaları oluşturmak için yeteneği yasaklayan, ekspresivitesini azaltır. Sadece belli zaten varolan dosyaları yazabilirsiniz bir süreç olarak lateks çalıştırın;
- Sen
\write18
cs ve dosya oluşturma css, bağlı değildir, ve bu tür yazı / toc / Varil yaratılması için güvenle onları çağırmak, sadece makro, var olan bir biçim dosyası oluşturabilirsiniz. Bu, müşteri ne işlevselliği karar vermek zorunda demektir: Onlar özgürce onlar ithal hangi paketleri seçmek mümkün olmaz, ancak onlara dayattığı seçimler faydalanmak gerekir. Aklınızdaki 'şablonlar' ne tür bağlı olarak, bu kabuk kaçar kullanmak paketlerinin kullanım sağlayan, iyi bir seçenek olabilir, ancak dosya biçimi gider Tex / Lateks kodu denetlemek gerekir.
Postscript
Başka Ben yani Lateks kullanarak form girişi PDF üreten, almış birine soru üzerine almak adresleme bir römorkör makale, Server side PDF generation based on LATEX templates, var.