PHP ile url gizleme ve engelleme
Sorum şu:
PHP ile yaptığım basit ftp sisteminde dosya düzenleme işlemi yapıyorum. Ama bir noktada takıldım ve yapamadım.
Düzenleme yaparken url'e şu şekilde çıkıyor:
http://localhost/ftp3.php?id=../../../../home/sv/port27/sv1/config.cfg
Buradaki ../../../../home kısını istediğim gibi değiştirip, sistemin diğer dosyalarında erişebiliyorum. Bunu nasıl engelleyebilirim.
Örneğin:
http://localhost/ftp3.php?id=../../../../etc/php.ini
Birde bunu url'e kısmını daha farklı nasıl yapabilirim.
Bu konuda bana yardımcı olabilecek arkadaşların yardımlarını bekliyorum
Email: [email protected]
Teşekkür ederim.
@tayfunerbilen
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (8)
bunu dene
case 'edit':
$path = "../../../../home/".$kadim."/cstrike";
$url = $path . '/' . str_replace('..', null, $_GET['f']);
$dosyaAdi .= $url;
$ac=fopen($url, "r");
while (!feof($ac)) {
$satir.= fgets($ac);
}
break;
@rennie
öncelikle sorunuz 316 gün öncekiyle aynı mı?
ve paylaştığınız kodların düzgün gözükmesi için
```php
// buraya kodları gelecek
```
bu şekilde yazmalısın.
buradaki makalede daha detaylı öğrenebilirsin.
switch ($_GET['act']){
default:
$dir = "../../../../home/".$kadim."/cstrike";
$dosyalar = glob($dir."/*");
foreach ($dosyalar as $listele) {
if(is_dir($listele)){
}
}
break;
case 'open':
$dir="../../../../home/".$kadim."/cstrike/".$_GET['dir'];
}
}
break;
case 'edit':
$f="../../../../home/".$kadim."/cstrike/".$_GET['f'];
$dosyaAdi .= $f;
$ac=fopen($f, "r");
while (!feof($ac)) {
$satir.= fgets($ac);
}
break;
}
sen bi base path belirleyeceksin. Örneğin;
$path = 'var/www/html';
$url = $path . '/' . str_replace('..', null, $_GET['url']);
echo $url;
çağırırkende şöyle çağıracaksın;
http://siteadi.com/?url=app/init.php
böylece şu şekilde denese bile çalışmayacak;
http://siteadi.com/?url=../../app/init.php