İnsanların grafik yükleyebileceği bir sitem var, bunu bir resim sunucusu veya resimler için bir forum gibi düşünebilirsiniz.
Şimdi, raster grafiklerinin belirli bir boyuta yüklenmesine izin veriyorum, ancak henüz vektör grafiği yok. SVG yüklemesine de izin vermek istiyorum, ancak kafamı daire içine alan iki endişe var:
Ayrıca, küçük resim için küçük bir (200x200 piksel) PNG oluşturmak iyi bir uygulama olabilir mi yoksa SVG'nin kendisini bir yakınlaştırma faktörü veya başka bir şeyle değiştirmek daha mı iyi?
Bu SVG istismarlarının mümkün olması durumunda kendimi onlara karşı nasıl koruyabilirim?
Bir SVG, meta verileri okurken sunucuyu yanıt vermeyecek şekilde oluşturulabilir. ve sunucuya DoS saldırısı olarak kullanılabilir mi?
Meta verilerle ne demek istiyorsun? Genişlik ve yükseklikten sonraysanız, SVG dosyalarını almak için en azından kısmen ayrıştırmanız gerekir; birçok bitmap biçiminde olduğu gibi başlıktan birkaç bayt okuma kısayolu yoktur. Bu, XML ayrıştırma işleminin olağan risklerini getirir, örneğin:
standart bir önlem olarak tüm DTD işlemlerini, XInclude, XSL, XSI ve varlık çözünürlüğünü devre dışı bırakırsınız.
Bir SVG, istemcide SVG oluştururken istemci yanıt vermemeye başlayacak ve potansiyel olarak sitemdeki her kullanıcının tarayıcısını kilitleyecek şekilde oluşturulabilir mi?
Muhtemelen, ancak bir bitmap biçiminde olması mümkün. Örneğin, bir süre önce bozuk PNG dosyası güvenlik açıklarına bakın.
SVG dosyaları için daha fazla endişe duydukları şey, barındırma sitesinin güvenlik bağlamında çalışacak JavaScript içerebilmeleridir, bu nedenle endişelenmek için siteler arası komut dosyası kullanmanız gerekir.
Aslında, yüklenen her türlü dosya, bu kadar doğrudan, istismar edilmesi kolay olmasa da, buna karşı savunmasızdır. Bazı durumlarda tarayıcılar (özellikle IE) onları içeri çeker ve etiketlere benzeyen şeyler görürlerse, JavaScript dahil olmak üzere HTML olarak yeniden yorumlayabilirler. Ayrıca, yüklenen dosyaları Java küçük uygulamalar ve Flash ilke dosyaları) olarak ele almanın bazı yan sorunları vardır.
Tüm bu sorunların standart azaltılması, bitmap, SVG veya başka bir şey olsun, güvenilmeyen kaynaklarınıza farklı bir etki alanından ana sitenize kadar hizmet vermektir: içinde hassas oturum (çerez/yetkilendirme) bilgisi olmayan ve hiçbir yeteneği olmayan bir etki alanı ana sitenizin alan adına komut dosyası eklemek için.
Ayrıca, küçük resim için küçük bir (200x200 piksel) PNG oluşturmak iyi bir uygulama olabilir mi yoksa SVG'nin kendisini bir yakınlaştırma faktörü veya başka bir şeyle değiştirmek daha mı iyi?
Bu hoş bir dokunuş olurdu, ancak bitmap oluşturmak için bazı bağımlılıkları sürüklemeniz gerekir, örneğin Java kullanıyorsanız Batik. Doğal olarak yeni bir karmaşık kütüphane getirmek saldırı yüzeyini arttırır; küçük resmi ayrı bir düşük ayrıcalıklı hesap düşük öncelikli daemon görevi olarak çalıştırmak iyi bir fikir olabilir.
Web uygulamanızın gerçekleştirdiği her işlem potansiyel olarak tehlikelidir. Dosya yükleme, uzaktan kod yürütülmesine neden olabileceğinden daha tehlikeli özelliklerden biridir.
Sunucuya herhangi bir dosya yüklemeyle ilgili sorun, aslında istediğiniz dosya olmayabilir. Hangi platform veya metodolojiyi kullandığınızı bilmiyorum, ancak .php veya .asp dosyasını yüklemek ve yürütmek için dosya yükleme sistemlerini birçok kez kandırdım. SVG'yi sunucu tarafında oluşturuyormuşsunuz gibi gelmiyor (yine de biraz garip olurdu), bu nedenle SVG'deki ham XML sunucunuz için gerçekten önemli değil.
# 2 açısından, evet svg bellek bozulması güvenlik açıkları yaygındır ve daha fazlası var eminim. Ancak yine de, yüklediğiniz herhangi bir dosya için bu doğru olacaktır. SVG görüntüleri biraz daha yeni ve 2011'de bulunan SVG görüntülerindeki güvenlik açıklarının büyük bir kısmı.
SVG Maskeleme, bir tıklama saldırısında iframe'leri gizlemek için kullanılır . Ancak bu saldırı vektörünün svg yükleme sisteminiz için geçerli olduğunu düşünmüyorum.