Hosting Dergi - 23.SAYI

Page 37

Bir çok insan yazdığı kod bloğunu paylaşıyor, yaşadıkları problemleri çözmeye çalışıyordu. Ardından benzer bir sorun yaşayan kişi doğrudan problemi ve çözüm üreten kodu görebiliyordu... Böylece "Bilgi güç oluyor ve paylaştıkça çoğalıyordu". Bir soru, bir dünya problem Dün akşam kişisel bir projem için kod geliştirirken Django isimli framework'ün dosya yükleme süreçlerinde herhangi bir validator sınıfı sunmadığını fark ettim. Bir diğer deyişle, dosya yüklerken dosyanın boyutunu, content-type'ını ve uzantısını kontrol etme imkanı sunan bir sınıfın Django tarafından by default sunulmadığını gördüm. Bunun üzerine google'e gidip FileField olarak tanımladığım model alanı için aşağıdaki soruyu sordum.

"Only accept a certain file type in FileField" İlk sırada her zaman ki beklediğim bir stackoverflow linki çıktı : http://stackoverflow. com/questions/6460848/in-django-how-doesone-limit-file-types-on-file-uploads-for-modelforms-with-fil. Soru tam olarak benim yaşadığım şeyi anlatıyordu; "In Django, how does one limit file types on file uploads for ModelForms with FileFields?" Ve tam olarak 4 yıl önce sorulmuştu. Bu süre zarfında ise 5.500 kere bu konu internet kullanıcı tarafından görüntülenmişti! Buyrun verilen ve doğru olarak kabul gören cevaplardan birine bakalım. Validating with the extension of a file name is not a consistent way. For example I can rename a picture.jpg into a picture. pdf and the validation won't raise an error. A better approach is to check the content_ type of a file.

def validate_file_extension(value): if value.file.content_type != 'application/pdf': raise ValidationError(u'Error message')

Aslında cevap veren kullanıcı, dosya isimleri üzerinde yapılacak değiştirmeler ile olası kuralların atlatılabileceğinin farkında. Lakin farkında olmadığı şey Burp ile request'i durdurarak Content-Type değerininde değiştirilebildiği. Bu cevabı görüp doğrudan kod bloğuna ekleyen yazılım

geliştirici arkadaşlar için malesef yapacak bir şey yok. Özellikle son bir yıldır yazılım geliştirici ekipler ile yakından çalışma imkanı bulmuş biri olarak şunu rahatlıkla söyleyebilirim ki, herkes copy/paste yapar! Hemde herkes. Paylaşılan her bilgi güvenilir değildir...

37


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.