Yükleme PDF veya. Doc ve güvenlik

5 Cevap php

Ben sunucuya kullanıcı yükleme metin dosyaları (PDF veya doc) sağlayan bir komut dosyası var, o planı ham metin onları dönüştürmek olduğunu. Dosya dönüştürülür kadar Ama, bu virüs ve kötü şeyler her türlü konusunda beni kaygılandırıyor ham formatında bulunuyor.

Herhangi Ben bu bilinmeyen dosyaların riskini en aza indirmek için yapmanız gereken fikirler. Temiz olup olmadığını kontrol etmek, ya da hatta o iddia biçimi ve o eğer sunucu çökmez nasıl.

5 Cevap

Ben Aerik yorumladı ama gerçekten sorunun cevabı olarak.

PHP> = 5.3 kullanım varsa finfo_file(). PHP'nin eski bir sürümünü varsa mime_content_type() (daha az güvenilir) kullanın veya PECL'de Fileinfo uzantısı yükleyebilirsiniz.

Bu iki fonksiyon (içlerinde veri türüne bakarak) dosyanın mime türünü döndürür. PDF için olmalı

text/pdf

Bir kelime doc için bir kaç şey olabilir. Genel olarak bu olmalıdır

application/msword

Sunucu * nix çalışıyorsa, o zaman tasarruf ediyoruz çalıştırılabilir dosyalar olmadığından emin olun. Daha da iyisi: web sunucusu tarafından erişilebilir olmayan bir klasöre kaydedebilirsiniz. Hala dosyalara erişmek için, ancak bir web sayfası talebinde birisi tüm bunları erişmek mümkün olmayacaktır kod yazabilirsiniz.

Hiç açılan veya sunucu üzerinde herhangi bir kullanıcı tarafından yüklenen dosya idam ettik, sunucu şimdi tehlikeye beklemelisiniz.

Hatta bir JPG yürütülebilir php içerebilir. Eğer include veya require script içinde herhangi bir şekilde dosya, aynı zamanda sunucu uzlaşma edebilirsiniz. Eğer web üzerinde takılmaları bir görüntü şöyle yaptı ...


header('Content-type: image/jpeg');
header('Content-Disposition: inline; filename="test.jpg"');

echo file_get_contents('/some_image.jpg');
echo '<?php phpinfo(); ?>';

... Eğer kendi sunucusunda yeniden konak gibi pek kaydetmek ve hangi ...


$q = $_GET['q']; // pretend this is sanitized for the moment
header('Content-type: '.mime_content_type($q));
header('Content-Disposition: inline; filename="'.$_GET['q'].'"');

include $q;

... Sunucu üzerinde phpinfo() yürütecek. Sitenizin kullanıcıları daha sonra sadece kendi masaüstüne görüntü kaydetmek ve sunucu ayarlarını görmek için not defteri ile açabilirsiniz. Sadece başka bir formata dosya dönüştürme o senaryoyu kaybolacak, ve dosyaya eklenmiş herhangi bir gerçek virüs algılanmaması gerekir.

Ayrıca yükleme bir virüs arama yapmak için iyi olabilir. Bir denetimi için bir satır içi sistem komutu yapmak ve herhangi bir bulursa görmek için çıkışını ayrıştırmak gerekir. Siteniz kullanıcıları zaten onlar indirmek dosyaları kontrol edilmelidir.

Aksi takdirde, sadece sunucu orada oturan, hatta bir virüs laiden kullanıcı yüklenen dosya bildiğim kadarıyla ... hiçbir şey zarar vermemeli.

Hum - imho gerçekten belge türü ya da bir şey hakkında endişelenmenize gerek olmamalıdır; Eğer çiğ metne dönüştürmek için iyi bir dönüştürücü kullanın eğer bu bir sunucu çökmesini olmadan bu kontrolleri yapmalı.

Istemci bilgisayarınızdan Bilindiği gibi, sunucuları her zaman virüsler ve saldırılara karşı korunmalıdır - yani yeni yüklenen dosya işleniyor önce kontrol edilmelidir.

Ben bu tür kendini denetler yapan bir web uygulaması görmedim - Seni hav?

Eğer PDF görüntüleme ediyorsanız, bu kötü niyetli bir PDF oluşturduğu yakalar olsun antivirüs ve pray yanında yapabileceğiniz hiçbir şey yoktur.

Dönüşüm yazılım normalde rağmen hedef değildir, böylece sadece dönüştürmek ve metin biçimi çıktı görüntülemek eğer, biraz daha güvenli olmalıdır.


Oh, server endişe vardır. Sadece yüklenen dosyaları yürütmek bilmiyorum ...

Bir şey onu çalıştırmayı dener kadar IMHO, sadece bir dosya. Ancak, kesinlikle kontrol edebilirsiniz (ama aşağıda açıklanacağı gibi, güvenmeyin) dosya uzantısı, ve ayrıca doğrulamak olabilir dosyasının başlığında bayt herhangi karakteristik dizileri olup olmadığını görmek için dosya biçimlerini araştırma olabilir.