PHP dosya yolu sterilize

4 Cevap php

Greetings, I'm hoping to make my tiny program secure so that potential malicious users cannot view sensitive files on the server.

	$path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";


	if(file_exists($path)) {
		echo file_get_contents($path);
	} else {
		header('HTTP/1.1 404 Not Found');
	}

Kafamın üst Off ben sorun olacağını '/ etc / passwd.. /.. /.. /.. /.. /.. "Gibi olduğunu bilsin, ama ben beklemek gerektiğini ne diğer malcious girdiler merak ve nasıl önlemek için.

4 Cevap

realpath() mutlak bir yola göreceli bilgiler içerebilir herhangi bir yol dönüştürmek izin verir ... Eğer o yolu sizden indirme izin vermek istediğiniz belirli bir alt dizin altında sağlayabilirsiniz.

basename yerine kullanıcı sağlayabilir tüm güvensiz yollarını tahmin çalışırken daha kullanın.

Eğer yapabilirsen, izin verilen dosyaların bir dizi gibi whitelist kullanımı ve buna karşı girişini kontrol edin: kullanıcı tarafından sorulan dosya bu listede yoksa, isteği reddetmek.

Burada bir ek ve önemli güvenlik riski vardır. Bu komut dosyası, herhangi bir sunucu tarafında işleme olmadan çıktı akımına bir dosyanın kaynağını enjekte edecektir. Bu herhangi bir erişilebilir dosyaları tüm kaynak kodu internete sızdı olacağı anlamına gelir.