2010-11-19 19 views
0

Merhaba Aşağıdakilerin herhangi bir tehdit oluşturup oluşturmayacağını merak ediyordum? URL, tarayıcıdan aldığı görüntü ve çıktıların "resim mevcut değil" şeklinde olup olmadığını kontrol eder. Henüz bir açıklama yapmadım. Ama ben daha fazla header() koymalı mıyım? Çıkmadan önce ayarları veya herhangi bir özledimse biraz daha güvenli hale getirebilecek başka öneriler.php üstbilgi içerik türü resim/jpeg güvenlik soru

header('content-type: image/jpeg'); 
$file = urlencode('http://domain.com/images/file.jpg'); 
ob_start(); 
require_once($file); 
$out = ob_get_contents(); 
ob_end_flush(); 
echo $out; 
+0

Onaylamak için, gelen URL keyfi mi? Bir görüntü olup olmadığını nereden ve nasıl kontrol ediyorsunuz? –

cevap

5

PHP'nin uzak bir dosyayı yorumlamasını istediğinden, bu büyük bir güvenlik riskidir. Bir kullanıcı komut dosyasına herhangi bir URI iletebilirse, sunucunuzun kontrolünü kolaylıkla yapabilir.

URL sarmalayıcıları kurulumunuzda mevcutsa, cURL işlevlerini veya basit bir file_get_contents (veya fopen) numaralı çağrıyı kullanmalısınız.

+0

"file_get_contents" işlevini en iyi kullandığımı ve 'ob_' öğesini kaldırdığımı mı düşünüyorsun? – Val

+0

aynı zamanda 'header ('content-type: image/jpeg') yanında' header() 'üzerine gitmek için başka bir öneriniz var mı?' 'Güvenlik veya başka bir şey geliştirmek için – Val

+0

Dosya bir uzak ana bilgisayardan geliyorsa, 'tmpfile() kullanılarak oluşturulan bir yerel dosyaya indirip, bir görüntü olup olmadığını algılamak ve istemciye aktarabilmek için finfo_file() dosyasını çalıştırın. Görüntüyü indirmek yerine görüntülemek için zorlamak için ek bir 'İçerik-Atma' başlığı ekleyebilirsiniz. Ama bu senin istediğin gibi olmayabilir. – icanhasserver

2

Bunun için mutlaka require_once kullanmamalısınız.

readfile()'u kullanın.

header('content-type: image/jpeg'); 
$file = urlencode('http://domain.com/images/file.jpg'); 
readfile($file); 
exit(); 
İlgili konular